使用if语句检查表中是否存在记录

时间:2015-05-07 21:43:29

标签: java mysql sql

我的总线表是空的,我正在尝试检查记录是否存在,但程序检索始终为true并跳转到真正的语句?!我已经尝试过SELECT COUNT(*) FROM bus我遇到了同样的问题。

boolean records = stt.execute("SELECT EXISTS(SELECT 1 FROM bus) ");
if (records) {
    //It is always jumping here.
    return insertRecord(mac, route, latD, longD, status, con);

} else {
    // The table exist without records.
    stt.execute("ALTER TABLE bus AUTO_INCREMENT = 1");
    return insertRecord(mac, route, latD, longD, status, con);
}

修改 我收到此错误,但如果删除这些行,一切正常。

  

Servlet [Jersey Web Application]的Servlet.service()在路径[/ serverSide]的上下文中引发了带有根本原因的异常[java.lang.NullPointerException]

PreparedStatement recordPrep = con
        .prepareStatement("SELECT COUNT(1) FROM bus");
ResultSet rs = recordPrep.getResultSet();

 if (rs.next()) {

    return insertRecord(mac, route, latD, longD, status, con);

 } else {
    // The table exist without records.
    stt.execute("ALTER TABLE bus AUTO_INCREMENT = 1");
    return insertRecord(mac, route, latD, longD, status, con);
}

2 个答案:

答案 0 :(得分:0)

execute(String) method不返回第一行的boolean值,它会告诉您是否有行。

  

execute方法执行SQL语句并指示第一个结果的形式。然后,您必须使用方法getResultSet或getUpdateCount来检索结果,并使用getMoreResults移动到任何后续结果。

     

返回:

     

如果第一个结果是ResultSet对象,则为true;如果是更新计数或没有结果,则为false

相反,请使用ResultSetStatement获取getResultSet,并检查第一行的第一个值(如果存在)。

答案 1 :(得分:0)

如果要检查SELECT COUNT(id) FROM bus表中是否有任何记录(假设您有bus列,则应使用id,如果没有将列名替换为{1}}列你有ID或任何其他专栏)