我正在寫一個簡單的C程序來檢查一個文件F是否是一個可用的SQLite3數據庫。有沒有辦法檢查一個文件是否是SQLite3數據庫?
我試着寫亂碼到一個文件test.db
,但sqlite3_open("test.db", &db)
返回0
我想無論是sqlite3_status()
或sqlite3_db_status()
做我想做的,但文檔指出不同的東西。
我正在寫一個簡單的C程序來檢查一個文件F是否是一個可用的SQLite3數據庫。有沒有辦法檢查一個文件是否是SQLite3數據庫?
我試着寫亂碼到一個文件test.db
,但sqlite3_open("test.db", &db)
返回0
我想無論是sqlite3_status()
或sqlite3_db_status()
做我想做的,但文檔指出不同的東西。
看看這個thread。
看起來像sqlite3_open
即使文件不是數據庫也會返回SQLITE_OK。但是,當您嘗試執行語句時,您將獲得SQLITE_NOTADB。打開數據庫並檢查SQLITE_NOTADB是否被返回,而不是閱讀標題,你可以做一些類似SELECT * FROM sqlite_master;
的事情。你可以更進一步,使用返回的數據來確保你的表格都存在。
您有什麼要求?是否足夠檢查標題?或者你想分析數據庫的缺陷? –
我只想知道F是一個實際的SQLite數據庫還是一個不可用的文件(例如文本文件,隨機文件等) –
該文檔的哪一部分指出了什麼不同? –