[英]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.