2012-11-02 123 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;的事情。你可以更進一步,使用返回的數據來確保你的表格都存在。

相關問題