我正在编写一个简单的C程序来检查文件F是否是可用的SQLite3数据库。
我尝试将乱码写入文件test.db
,但sqlite3_open("test.db", &db)
返回0。
我认为sqlite3_status()
或sqlite3_db_status()
可以做我想要的,但文档说明了不同的内容。
答案 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。如果你想识别有效的文件,那应该没问题。