Sqlite_master没有更新

时间:2014-06-27 09:00:25

标签: java database sqlite

如果文件中存在一个表(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;
}

1 个答案:

答案 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();
}