我正在编写一个简单的 C 程序来检查文件 F 是否是可用的 SQLite3 数据库。
我尝试将乱码写入文件test.db
,但sqlite3_open("test.db", &db)
返回 0。
我想要么sqlite3_status()
做我想做的事,要么sqlite3_db_status()
做我想做的事,但文档说明了一些不同的东西。
看看这个线程。
sqlite3_open
即使文件不是数据库,它看起来也会返回 SQLITE_OK 。但是,当您尝试执行语句时,您将获得 SQLITE_NOTADB。您可以SELECT * FROM sqlite_master;
在打开数据库后检查是否返回 SQLITE_NOTADB,而不是读取标题。您可以更进一步,使用返回的数据来确保所有表都存在。
文件必须以固定的标题开头。如果您想识别有效文件,那应该没问题。