2012-11-02 74 views
3

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

我试着写乱码到一个文件test.db,但sqlite3_open("test.db", &db)返回0

我想无论是sqlite3_status()sqlite3_db_status()做我想做的,但文档指出不同的东西。

+1

您有什么要求?是否足够检查标题?或者你想分析数据库的缺陷? –

+0

我只想知道F是一个实际的SQLite数据库还是一个不可用的文件(例如文本文件,随机文件等) –

+0

该文档的哪一部分指出了什么不同? –

回答

4

看看这个thread

看起来像sqlite3_open即使文件不是数据库也会返回SQLITE_OK。但是,当您尝试执行语句时,您将获得SQLITE_NOTADB。打开数据库并检查SQLITE_NOTADB是否被返回,而不是阅读标题,你可以做一些类似SELECT * FROM sqlite_master;的事情。你可以更进一步,使用返回的数据来确保你的表格都存在。

相关问题