Der Befehl ist mit verschiedenen Komponenten / Wrappern unterschiedlich zu implementieren.
Ich verwende die rudimentären Routinen aus "DISQLite3 Personal".. und das schöne ist..
ich brauche keine
DLL und nix - ist alles implementiert..
.. hier ein Schnippsel mit kleinen Erklärungen
und die Zeile - um welche es geht ist mit einem ">>" markiert.
Delphi-Quellcode:
uses
..., DISQLite3Api,DISystemCompat,...
// eingebundene Units
var
DB: sqlite3_ptr;
// Globale Variable für eine Datenbankdatei
Stmt: sqlite3_stmt_ptr;
// Globale Variable für ein vordefiniertes Statement .. brauche ich aber nicht :-)
....
Procedure CreateDatabases;
var MySetupStatement :
String;
MyDataStatement :
String;
begin
MySetupStatement:='
CREATE TABLE IF NOT EXISTS Setup ('
+ '
idno BIGINT,'
+'
clearonnewrecord BOOLEAN,'
+'
lastfilename CHARACTER(60))';
MyDataStatement:='
CREATE TABLE IF NOT EXISTS Data ('
+'
idno BIGINT,'
+'
name CHARACTER(80) PRIMARY KEY,'
+'
farbe CHARACTER(20),'
+'
modus INTEGER,'
+'
gruppe BOOLEAN,'
+'
hersteller CHARACTER(60),'
+'
jahr CHARACTER(4),'
+'
synonyms CHARACTER(100),'
+'
deu BLOB,'
+'
eng BLOB,'
+'
fra BLOB,'
+'
ita BLOB,'
+'
spa BLOB,'
+'
pol BLOB,'
+'
ung BLOB,'
+'
hol BLOB,'
+'
chn BLOB,'
+'
rus BLOB )';
sqlite3_initialize;
// SQLite3 Routinen initialisieren und Speicher anfordern
sqlite3_check(sqlite3_open('
SRS4.db3', @
DB));
// Datenbank Öffnen und Handle der Variable DB zuweisen
sqlite3_exec_fast(
DB, '
PRAGMA locking_mode=EXCLUSIVE');
// Schreibschutz aktivieren
sqlite3_exec_fast(
DB, '
PRAGMA cache_size=4000');
// Kleiner Lese/Schreibpuffer erzeugen
sqlite3_exec_fast(
DB, '
PRAGMA synchronous=OFF');
// Erhöht Schreibzugriff aber erniedrigt Sicherheit
>>sqlite3_exec_fast(
DB, '
PRAGMA encoding = "UTF-8"');
// Erzeugt DB mit UTF-8 Zeichensatz Unterstützung
sqlite3_exec_fast(
DB, MySetupStatement);
// Datenbank SETUP erzeugen
sqlite3_exec_fast(
DB, MyDATAStatement);
// Datenbank DATA erzeugen
sqlite3_exec_fast(
DB, '
CREATE INDEX data_idno ON data (idno)');
// index in der Tabelle "data" erzeugen
sqlite3_exec_fast(
DB, '
INSERT INTO setup (idno,clearonnewrecord,'
// Setup Daten eintragen
+'
lastfilename)'
+'
VALUES (0,0,"SRS4.db3")');
sqlite3_check(sqlite3_close(
DB),
DB);
// Datenbank schließen und ggf Fehler emitteln
sqlite3_shutdown;
// Speicher freigeben
end;
Hinweis1: Die Function sqlite3_check() wandelt eine durch die Routine als Zahl zurückgegebenen Fehlercode in Klartext um
was "seeeehr" angenehm ist
Hinweis2: Wenn eine Datenbank mit einem Zeichensatz erstellt wird (in meinem Beispiel mit UTF-8 Codierung), so ist eine
spätere Änderung in einen anderen Zeichensat (z.B. UTF-16) nicht mehr möglich.