Sehr bequem ist im übrigen auch die Verwendung von tcc zusammen mit SQLITE, da SQLITE (Packages sqlite/libsqlite-dev/libsqlite0-dev) keinen extra Server benötigt und das eröffnet ganz andere Möglichkeiten in Bezug auf C-Scripting. Man kann quasi ohne grossen Installations und einrichtungsstress losproggen. Beispiel zu sqlite mit tcc:
Die Datei main3.c hat folgenden inhalt:
Code: Alles auswählen
#!/usr/bin/tcc -run -L/usr/lib/ -lsqlite
#include <stdio.h>
#include <sqlite.h>
int callback1( void* p1, int p2, char** p3, char** p4)
{
{
int i;
for( i= 0; p3[ i]; i++) printf( "p3 %s ", p3[i ]);
for( i= 0; p4[ i]; i++) printf( "p4 %s ", p4[i ]);
}
printf( "callback1 called p1 %d\n", p1);
return 0; // hört bei 1 auf
}
int main()
{
sqlite *sp= sqlite_open( "test3.db", 0 /* mode, notsupported, immer rw*/, NULL /* char **errmsg */);
if( sp)
{
sqlite_exec( sp, "drop table a", NULL, NULL, NULL);
sqlite_exec( sp, "create table a ( i int, k varchar)", NULL, NULL, NULL);
sqlite_exec( sp, "insert into a ( i, k ) values( 3, 'd') ", NULL, NULL, NULL);
sqlite_exec( sp, "insert into a ( i, k ) values( 5, 'x') ", NULL, NULL, NULL);
printf( "select i from a:\n");
sqlite_exec( sp, "select i from a", callback1, NULL, NULL);
printf( "select i, k from a:\n");
sqlite_exec( sp, "select i, k from a", callback1, NULL, NULL);
close( sp);
}
return 0;
}
Das Programm legt ein File test3.db an, wenn es noch nicht existiert, ansonsten wird eine bestehende Datenbank geöffnet; deswegen muss man als erstes im Testbeispiel auch erstmal die Tabelle löschen und wieder anlegen, sonst wird die durch die folgenden Aufrufe (eintragen der Testdaten) immer größer mit jedem Aufruf von dem Programm main3.c. Für den Fall, daß man ein von überall aus zugängliches Programm schreiben wil sei angemerkt, daß sqlite das DB-File relativ zum cwd (CurrentWorkingDirectory) anlegt, so daß in dem Fall besser ein Absoluter Pfad für das File verwendet wird. Es kann natürlich auch Fälle geben, wo das DB-File gerade dort erzeugt werden soll, wo man sich befindet. Abschliessend sei noch angemerkt, daß sqlite von sich behauptet, schneller zu sein als Mysql.
Was will man mehr: ein schneller tcc und eine flotte sqlite-DB mit DB-File für C/SQL-Scripting; ideal für flotte Admins :-)
weedy.