簡體   English   中英

SQLite3打開文件的問題

[英]SQLite3 open file problems

我使用GTK +和SQLite作為小型數據庫程序的前端,但是我無法讓SQLite在打開時正確檢測文件類型。 無論打開什么,它都會返回SQLITE_OK。

我嘗試了sqlite3_opensqlite3_open_v2 ,問題仍然存在。 無論打開哪種文件類型,輸出始終是相同的:

/home/shawn/Programming/languagedb/lang.db
0 6304656
good
/home/shawn/Programming/languagedb/Makefile
0 6304656
good

這是相關的代碼:

void OpenDialog()
{
    GtkWidget *WinOpen;

    WinOpen = gtk_file_chooser_dialog_new("Open Database",GTK_WINDOW(WinOpen),GTK_FILE_CHOOSER_ACTION_OPEN,GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,GTK_STOCK_OPEN,GTK_RESPONSE_ACCEPT,NULL);

    if(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(WinOpen)))
    {
        char *filename;
        filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(WinOpen));
        printf("%s\n",filename);

        db = NULL;
        rc = sqlite3_open_v2(filename,&db,SQLITE_OPEN_READONLY,NULL);

        printf("%i %i\n",rc,&db);

        if(SQLITE_OK == rc && NULL != db)
        {
            printf("good\n");
        }

        sqlite3_close(db);
    }

    gtk_widget_destroy(WinOpen);
}

就像我在此答案中所說的那樣,您需要在SQLite嘗試讀取之前對打開的數據庫句柄執行非pragma ,然后驗證文件的內容。

暫無
暫無

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

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