JDBC检查条目是否存在

时间:2017-09-05 19:22:48

标签: java mysql sql jdbc

我正在尝试检查表格中是否存在条目。我使用了以下资源并在mysql workbench中运行代码,看看我是否运行错误,但事实并非如此。

检查ResultSet是否已填满 - > Is ResultSet Filled

SQL语法 - > SQL

这是我正在运行的当前代码

    public static Boolean exists(Table t, int userId){
    boolean e = false;
    if (connection != null){
        try {
            String SQL = "SELECT EXISTS(SELECT 1 FROM " + t.table + " WHERE id = " + String.valueOf(userId) + ")";
            System.out.println(SQL);
            stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery(SQL);
            if (isFilled(rs))
                e = true;
        } catch (SQLException l) {
            l.printStackTrace();
        }
    }
    return e;
}
public static boolean isFilled(ResultSet rs){
    boolean isEmpty = true;
    try {
        while(rs.next()){
            isEmpty = false;
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return !isEmpty;
}

无论我输入的用户ID是

,问题都存在,总是返回true

3 个答案:

答案 0 :(得分:1)

EXISTS已经返回一个布尔结果,因此ResultSet中总有一行。

检查保证存在的返回值或从查询中删除EXISTS子句,它将返回零行或一行(值为1)。

答案 1 :(得分:0)

因此,根据您的问题,您要检查相应ID的行是否可用。

所以,你可以轻松地做到这一点。

String sql_res= "select * from students where sid=2";
rs=st.executeQuery(sql_res);

然后检查该行是否存在

//it will print true if a row exists for the given id and false if not. 
    System.out.println(rs.next()); 

答案 2 :(得分:0)

如果计算结果,您将始终得到正确答案:

PreparedStatment ps = connection.prepareStatement("select count(*) from students where sid = ?");
ps.setInt(1,userId);
ResultSet rs = ps.executetQuery();
int n = 0;
if ( rs.next() ) {
    n = rs.getInt(1);
)
if ( n > 0 ) {
   // do what ever you need, if the row exists  
}