2

我正在尝试检查数据库中是否存在记录,但我不确定如何执行此查询,它给出了 executeQuery(checkSql) 错误。你能帮我吗?

public void addScore(int score, String name)
{
    try {
        con = mgr.getConnection();

        String checkSql = "if EXISTS (select * from HIGHSCORES where name = '"+name+"')";

        Statement st = con.createStatement();
        //ResultSet result = st.executeQuery(checkSql);



        } catch (SQLException e) {
        e.printStackTrace();
    }
    mgr.closeConnection(con);
}
4

2 回答 2

3

奇怪的是,对于许多数据库的存在只能用作条件,而不是结果本身。例如,以下是有效的

select * from some_table where exists (select * from HIGHSCORES where name = '"+name+"')

但这对许多系统无效。

exists (select * from HIGHSCORES where name = '"+name+"')

如果发生这种情况,尽管您可以通过以下方式获取记录是否存在

select count(*) from HIGHSCORES where name='"+name+"' limit 1

这会给你计数,并在找到至少一条记录后停止,一个小的优化。

于 2013-05-05T19:04:13.270 回答
3
String checkSql = "select count(*) from HIGHSCORES where name = '"+name+"'";

Statement st = con.createStatement();
ResultSet result = st.executeQuery(checkSql);
result.next();
if ( result.getInt(1) == 0) {
  System.out.println("doesn't exist");
} else {
  System.out.println("exists");
}

为了使这更好,您将切换到防止 SQL 注入的 PreparedStatement

于 2013-05-05T18:57:29.017 回答