2012-03-24 7 views
0

Ich versuche, einige Utils für die Verwendung mit SQLite-Datenbanken zu machen. Dafür schaffe ich sqlite3_ut.h und sqlite3_ut.c DateienC, wie sqlite3 Datenbank-Handle zu übertragen

sqlite_ut.h

#ifndef sqlite3_ut_h 
#define sqlite3_ut_h 

#include <stdio.h> 
#include "sqlite3.h" 

int drop_table(sqlite3 handle); 

#endif 

sqlite_ut.c

int drop_table(sqlite3 handle) 
{ 
int dropped = 0; 
printf("Begin Drop\n"); 

sqlite3_exec(handle, "BEGIN;", NULL, NULL, NULL); 
sqlite3_stmt *droptab; 
if (sqlite3_prepare_v2(handle, "DROP TABLE mytable;", -1, &droptab, 0) != SQLITE_OK) 
    printf("db error: %s\n", sqlite3_errmsg(handle)); 

if(droptab) 
{ 
    sqlite3_step(droptab); 
    dropped = 1; 
} 
else 
    printf("Error: drop_table"); 

sqlite3_finalize(droptab); 
sqlite3_exec(handle, "COMMIT;", NULL, NULL, NULL); 

printf("End Drop\n"); 
return dropped; 
} 

sqlite_ut.h in Hauptdatei enthalten ist.

Offensichtlich kann ich Handle der geöffneten Datenbank nicht zu drop_table Funktion übertragen, die von sqlite3 Typ ist.

Wie geht das mit der vorgeschlagenen Programmkonfiguration?

+0

Warum nicht, haben Sie es versucht? Erhalten Sie Fehler? –

+0

Hey Joe. Ich habe eine Situation hier. Kompilieren von C++ - Programm mit c-Header und c-Datei, die angezeigt werden, und jetzt bekomme ich 'undefinierte Referenz auf Drop_Table' Nachricht. Was ist zu tun? –

Antwort

2

Die Griffe von SQLite3 sind vom Typ sqlite3 *, nicht sqlite3. Definieren Sie drop_table wie folgt:

int drop_table(sqlite3 *handle) { … } 
+0

Danke. Ich werde es versuchen, sobald es möglich ist :) –

Verwandte Themen