簡體   English   中英

sqlite3_open - 檢查文件是否為sqlite3數據庫的問題

[英]sqlite3_open - problems checking if a file is a sqlite3 database

我是第一次使用sqlite3,並且在打開文件之前無法正確檢查文件。 到目前為止,sqlite總是在任何文件上返回OK。

此外,文件名是從GTK文件選擇器返回的變量。 它返回一個絕對路徑,我猜這不是問題。

謝謝你的幫助。

這是代碼的片段:

int rc;
char *filename;
sqlite3 *db;

filename = gtk_file_chooser_get_filename(etc.);

if(SQLITE_OK == rc = sqlite3_open(filename,&db))
{  etc. }

在准備好第一個非pragma語句之前, sqlite3_open實際上不會讀取該文件。

sqlite3_open_v2提供其他選項。

你的代碼是否編譯?
我相信這是一個錯誤

if (SQLITE_OK == rc = sqlite3_open(filename,&db)) { /* ... */ }

它是一樣的

if ((SQLITE_OK == rc) = sqlite3_open(filename,&db)) { /* ... */ }

並且您不能將某些內容( sqlite3_open()調用的結果sqlite3_open()分配給(SQLITE_OK == rc)

試試這個:

if ((rc = sqlite3_open(filename,&db)) == SQLITE_OK) { /* ... */ }
/* or, if you really want the constant on the left side of the comparison */
if (SQLITE_OK == (rc = sqlite3_open(filename,&db))) { /* ... */ }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM