我正在尝试检查表格中是否存在条目。我使用了以下资源并在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答案 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
}