3

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

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

我想要么sqlite3_status()做我想做的事,要么sqlite3_db_status()做我想做的事,但文档说明了一些不同的东西。

4

2 回答 2

4

看看这个线程

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

于 2012-11-02T01:15:41.987 回答
1

文件必须以固定的标题开头。如果您想识别有效文件,那应该没问题。

于 2012-11-02T00:28:32.363 回答