2017-07-21 5 views
0

War nicht sicher, wie diese Frage zu formulieren ... Ich arbeite an einem Programm mit SQLite als DB. Mein Problem ist, dass ich meine Datenbank bei jeder Abfrage immer wieder öffne und schließe, und ich wollte wissen, ob es in C Sprache einen proper Weg gibt, es zu vermeiden."Factoring" SQLite DB-Verbindung in C

Hier ist der Code, den ich immer vor einer Anfrage mache ... Mein Code wird mit Funktionen behandelt.

char *err_msg = 0; 
    sqlite3_stmt *res; 

    int rc = sqlite3_open(db_name, &db); 

    if (rc != SQLITE_OK) { 

     fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db)); 
     sqlite3_close(db); 

     return 1; 
    } 

    char *sql = "SELECT * FROM table"; 

    rc = sqlite3_prepare_v2(db, sql, -1, &res, 0); 

So ist meine Frage, was kann ich und mein rc ich jedes Mal, lege es vermeide meine Datenbank öffnen will eine neue Abfrage machen?

Ist es möglich, es am Anfang ein einziges Mal zu öffnen, meine Zeigervariable an jede Funktion übergeben und jede SQL-Abfrage automatisch festschreiben und dann an den Ausgangspunkten meines Programms schließen?

Antwort

1

Führen Sie einfach eine separate Funktion aus, um die Datenbankverbindung zu öffnen und in einer globalen Variablen zu speichern. Dann, wann immer Sie auf die Datenbank zugreifen müssen, verwenden Sie einfach diese globale.

Bevor Sie beenden, rufen Sie eine andere Funktion auf, die die Datenbankverbindung schließt.

+0

Ich musste auch meine globale Variable erweitern, damit ich es auf Seite .c-Dateien verwenden konnte. Danke für die Hilfe @dbush! – Praem