====== Ausführen von SQL-Kommandos in einem Schritt ====== ''int sqlite3_exec(\\ sqlite3*,\\ const char *sql,\\ int (*callback)(void*,int,char%%**%%,char%%**%%),\\ void *,\\ char %%**%%errmsg \\ );'' \\ ---- \\ Mit Hilfe dieses Befehls kann ein, oder mehrere SQL-Kommandos ausgeführt werden. Mehrere Kommandos müssen durch Semikolons getrennt werden. - Parameter: Pointer vom Typ [[dbs:sqlite:libsqlite3:ref:sqlite3|sqlite3]] der auf eine offene Datenbankverbindung zeigt. - Parameter: Pointer vom Typ char, der auf das erste Zeichen eines SQL-Kommandos zeigt. - Parameter: Aufruf der Callbackfunktion, die Rückgabewerte auswerten kann. siehe unteres Beispiel - Parameter: Pointer vom Typ void. An dieser Stelle kann ein beliebiges Argument an die Callbackfunktion übergeben werden. - Parameter: Pointer vom Typ char. Hierher werden Fehlermeldungen geschrieben. Solche Fehlermeldungen müssen per [[dbs:sqlite:libsqlite3:ref:sqlite3_free|sqlite3_free()]] freigegeben werden. Die Angabe der Callbackfunktion ist optional. Wird kein Ergebnis benötigt, kann der Parameter auf NULL gesetzt werden. Handelt es sich bei dem zweiten Parameter um einen leeren String oder um einen NULL-Wert finden keine Veränderungen in der Datenbank statt. Diese Funktion ist mit den drei zugrunde liegenden Funktion [[dbs:sqlite:libsqlite3:ref:sqlite3_prepare_v2|sqlite3_prepare_v2()]], [[dbs:sqlite:libsqlite3:ref:sqlite3_step|sqlite3_step()]] und [[dbs:sqlite:libsqlite3:ref:sqlite3_finalize]] erstellt worden. Diese Funktion kann problemlos durch die Kernfunktionen ersetzt werden. Hier ein Beispiel für eine Callbackfunktion, die alle in der Datenbank enthaltenen Werte auf der Konsole ausgibt: int callback(void *freier_Pointer, int Anzahl_der_Tabellenzeilen, char **Spaltenwert, char **Spaltenname) { int i; for (i = 0; i != Anzahl_der_Tabellenzeilen; ++i) { printf("%s: ",&*Spaltenname[i]); if (Spaltenwert[i]) printf("%s\n",&*Spaltenwert[i]); } return 0; }