2009-12-11 7 views
0

작은 데이터베이스 프로그램의 프런트 엔드로 GTK + 및 SQLite를 사용하고 있으며 열린 상태에서 SQLite가 파일 형식을 제대로 감지하지 못합니다. 열리는 항목에 관계없이 SQLITE_OK를 반환합니다.SQLite3 열린 파일 문제

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); 
} 

답변

1

나는 또한 당신이 비 pragma 문을 실행해야 this answer에서 말했듯 SQLite가 읽으려고 시도하기 전에 열려있는 데이터베이스 핸들에 대해 파일 내용을 확인하십시오.

+0

감사합니다. 그게 무슨 뜻인지 모르겠으니 좀 더 연구 할게. –