2009-12-11 5 views
0

J'utilise GTK + et SQLite en tant que frontal pour un petit programme de base de données, et SQLite ne peut pas détecter correctement le type de fichier en mode ouvert. Peu importe ce qui est ouvert, il retourne SQLITE_OK. J'ai essayé sqlite3_open et sqlite3_open_v2, le problème persiste toujours. La sortie est toujours le même, quel que soit le type de fichier est ouvert:Problèmes de fichiers ouverts SQLite3

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

Et voici le code connexe:

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

Répondre

1

Comme je l'ai dit aussi à this answer vous devez exécuter une instruction non pragma par rapport au handle de base de données ouvert avant que SQLite essaie de lire, puis vérifiez le contenu du fichier.

+0

Merci. Je n'étais pas sûr de ce que cela signifiait, alors je ferai d'autres recherches. –

Questions connexes