2012-05-27 44 views
4

我有一個sqlite3_open_v2函數的問題。 OS是Windows,在Qt Creator中開發。函數sqlite3_open_v2文件路徑

sqlite3_open("database.db", &db); // works fine

sqlite3_open_v2("database.db", &db, SQLITE_OPEN_READWRITE, ""); // don't work

我肯定它不是UTF-8作弄問題,導致第一個功能工作正常,我試圖改變作弄在項目屬性。 也許問題是在第一個參數中的文件路徑。絕對路徑也不起作用。

任何人有任何想法和使用此功能的例子?

+1

什麼是錯誤?模式應該是像「rw」這樣的字符串 –

+0

沒有錯誤。編譯很好,但函數返回的代碼總是SQLITE_ERROR,所以找不到datbase。 – adm

回答

4

這可能是因爲該文件不存在於工作目錄中。 我會在調用sqlite3_open_v2之前添加一些代碼來打印當前工作目錄的路徑。

sqlite3_open和sqlite3_open_v2與SQLITE_OPEN_READWRITE之間的一個區別是第一個不會找到文件時創建一個空數據庫,而第二個不會。

爲了允許與sqlite3_open_v2數據庫的創建,你應該使用:

sqlite3_open_v2("database.db", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); 

一定要看看以瞭解更多信息的文檔: http://www.sqlite.org/c3ref/open.html

+0

感謝您的回答。 – adm

4

感謝答案。

問題出在最後一個參數。它必須是0或NULL而不是「」

就這些,謝謝