如果文件中存在一个表(test.db),我有一个应该返回true的函数。有一段时间这个工作正常但我最近删除了.db文件来测试其余的代码是否能够从头开始生成数据库。但是,不是返回false的函数,它继续返回true,即使该表肯定不存在。
代码:
public static boolean tableExists(String table){
boolean tableExists = true;
try{
sql = "SELECT * FROM sqlite_master WHERE name ='"+table+"' and type='table'; ";
stmt.executeUpdate(sql);
}catch(Exception e){
tableExists = false;
}
return tableExists;
}
答案 0 :(得分:0)
此函数实际上不会检查查询是否返回数据。
(并且executeUpdate
对SELECT语句没有意义。)
您必须尝试阅读查询返回的内容:
public static boolean tableExists(String table) {
sql = "SELECT 1 FROM sqlite_master WHERE name ='"+table+"' and type='table'";
ResultSet rs = stmt.executeQuery(sql);
return rs.first();
}