我在使用SQLite的Qt应用程序中有这个小代码片段:
db.setDatabaseName("./good.db");
if(!db.open())
{
QMessageBox m(QMessageBox::Critical,"Connection Error",db.lastError().text() );
m.exec();
exit(0);
}
问题是如果我用bad.db之类的不存在的文件替换good.db,那么我不会收到错误。我想这是有道理的,因为我实际上可以创建数据库作为proccess,ala CREATE TABLE的一部分。
我可以简单地测试文件的存在,但这对我来说似乎是一种粗俗的方法。有没有办法(从Qt和libsqlite)来测试数据库的存在?
答案 0 :(得分:0)
使用sqlite3_open
,不访问数据库,如果不存在,甚至可以通过后续sqlite3_
调用创建。 sqlite3_open_v2
有一个选项SQLITE_OPEN_READWRITE
,如果数据库不存在,则会强制返回错误。