有没有办法检查文件是否是SQLite3数据库?

时间:2012-11-02 00:11:50

标签: c sqlite

我正在编写一个简单的C程序来检查文件F是否是可用的SQLite3数据库。

我尝试将乱码写入文件test.db,但sqlite3_open("test.db", &db)返回0。

我认为sqlite3_status()sqlite3_db_status()可以做我想要的,但文档说明了不同的内容。

2 个答案:

答案 0 :(得分:4)

查看此thread

即使文件不是数据库,sqlite3_open也会返回SQLITE_OK。但是,当您尝试执行语句时,您将获得SQLITE_NOTADB。在打开数据库并检查是否返回SQLITE_NOTADB之后,您可以执行SELECT * FROM sqlite_master;之类的操作,而不是读取标题。您可以更进一步,使用返回的数据来确保所有表都存在。

答案 1 :(得分:1)

the file must begin with a fixed header。如果你想识别有效的文件,那应该没问题。