OBS/Adminhilfe/SQLite: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
Für diese Seite wurde eine Zugriffsbeschränkung eingerichtet. Falls du diese Nachricht siehst, bist du nicht berechtigt, diese Seite einzusehen.
(Die Seite wurde neu angelegt: „{{ZugriffOBS}} <div><font size ="3"> =SQLite= Ab Delphi XE10 kann ein TxDB-Objekt für verschiedenste Datenbanken erstellt werden. '''Unit Base.xDatabase''' …“)
 
K (hat „Admin/SQLite“ nach „OBS/Adminhilfe/SQLite“ verschoben)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 8: Zeile 8:
  DBType = (DB_MDB, DB_MSSQL, DB_PARADOX, DB_IB6, DB_MYSQL, DB_SQLite);
  DBType = (DB_MDB, DB_MSSQL, DB_PARADOX, DB_IB6, DB_MYSQL, DB_SQLite);


Derzeit wird MySql und SQLite unterstütz.
Derzeit wird MySql und SQLite unterstützt.


==Erstellen eines TxDB-Objektes==
==Erstellen eines TxDB-Objektes==
Zeile 47: Zeile 47:
   
   
  //Datenbank erstellen
  //Datenbank erstellen
  //diese funktion ist nicht in Baselib enthalten und muss für Apps aus Passlib kopiert werden und angepasst werden,
  //Diese Funktion ist nicht in Baselib enthalten und muss für Apps aus Passlib kopiert werden und angepasst werden,
  //evtl auch mit compiler deriktiven lösbar (Gauge)
  //evtl auch mit compiler deriktiven lösbar (Gauge)
  if DB_Server_UpdateStruktur(TPath.Combine(ExePath(), 'Sys\ObsAPPDB.sys'),
  if DB_Server_UpdateStruktur(TPath.Combine(ExePath(), 'Sys\ObsAPPDB.sys'),

Aktuelle Version vom 9. September 2016, 15:02 Uhr

Dies ist eine zugriffsgeschützte Seite.


Admin-Hilfe

OBS-Administration / Installation
kundenspezifische Anpassungen
OBS Protokolle
Shop-Administration

SQLite

Ab Delphi XE10 kann ein TxDB-Objekt für verschiedenste Datenbanken erstellt werden.

Unit Base.xDatabase

DBType = (DB_MDB, DB_MSSQL, DB_PARADOX, DB_IB6, DB_MYSQL, DB_SQLite);

Derzeit wird MySql und SQLite unterstützt.

Erstellen eines TxDB-Objektes

oSQLiteDB := TxDB.Create(DB_SQLite);

Es genügt dem Create die Datenbankengine als Parameter mit zu geben (Standard ist DB_MYSQL). Das Objekt weiß dann von selbst wie die Zugriffe auf die Datenbanken zu regeln sind. Dieses Objekt kann mit den gewohnten Funktionen auf die Datenbank zugreifen.

Beispiel-Zugriff

//DB Objekt auf SQLite erstellen
//Dadurch weiß das Objekt automatisch wie die Zugriffe sein müssen
oSQLiteDB := TxDB.Create(DB_SQLite);
 
//Mit Datenbank verbinden
oSQLiteDB.UserPassword := oApplication.DBPassWort;
DB_ConnectToDatabase(oSqliteDB, TPath.Combine(ExePath(), 'obs.sdb'));

//Datensatz auslesen
ShowMessage('TEST DB_Read erfolgreich: '+DB_ReadSQLValue(oSQLiteDB, 'S_ANRED', 'AR_NAME', 'AR_NR = ' + DB_SQLVal(cNr)));

Beispiel-Neu anlegen und Zugriff

//DB Objekt auf SQLite erstellen
//Dadurch weiß das Objekt automatisch wie die Zugriffe sein müssen
oSQLiteDB := TxDB.Create(DB_SQLite);

//Struktur einlesen und den Objekt zuweisen
DB_ReadUpdateStructFile(TPath.Combine(ExePath(), 'Sys\ObsAPPDB.sys'),oTabel,aTabelFlags, oUserTabel);

oSQLiteDB.oTable := oTabel;
oSQLiteDB.aTableFlags := aTabelFlags;
oSQLiteDB.oUserTable := oUserTabel;

//Passwort für DB festlegen
oApplication.DBPassWort := 'TEST1234';

//Datenbank erstellen
//Diese Funktion ist nicht in Baselib enthalten und muss für Apps aus Passlib kopiert werden und angepasst werden,
//evtl auch mit compiler deriktiven lösbar (Gauge)
if DB_Server_UpdateStruktur(TPath.Combine(ExePath(), 'Sys\ObsAPPDB.sys'),
                            TPath.Combine(ExePath(), 'obs.sdb'),
                            ,
                            ,
                            oApplication.DBPassWort,
                            ,
                            ,
                            0,
                            ,
                            DB_SQLite) then begin
    ShowMessage('Erstellen erfolgreich');
end else begin
    ShowMessage('Erstellen Fehler');
end;
 
//Mit Datenbank verbinden
oSQLiteDB.UserPassword := oApplication.DBPassWort;
DB_ConnectToDatabase(oSqliteDB, TPath.Combine(ExePath(), 'obs.sdb'));

//Datensätze in Tabelle schreiben
xData := qSQlInit(oSqliteDB,'S_ANRED');
cNr := DB_NeuNum(oSqliteDB,'S_ANRED','AR_NR');
xData.qSet('AR_NR'       ,cNr);
xData.qSet('AR_NAME'     ,'TEST');
xData.qSet('AR_BRIEF'    ,);
xData.qSet('SYS_ZENTRALE',);
xData.qSet('sys_uid'     ,RandomNumString(10));
 
xData.SaveData(NEW_RECORD);
qSqlFree(xData);

xData := qSQlInit(oSqliteDB,'S_ANRED');
cNr := DB_NeuNum(oSqliteDB,'S_ANRED','AR_NR');
xData.qSet('AR_NR'       ,cNr);
xData.qSet('AR_NAME'     ,'TEST15');
xData.qSet('AR_BRIEF'    ,);
xData.qSet('SYS_ZENTRALE',);
xData.qSet('sys_uid'     ,RandomNumString(10));

xData.SaveData(NEW_RECORD);
qSqlFree(xData);

//Datensatz auslesen
ShowMessage('TEST DB_Read erfolgreich: '+DB_ReadSQLValue(oSQLiteDB, 'S_ANRED', 'AR_NAME', 'AR_NR = ' + DB_SQLVal(cNr)));

//Datensätze über XQuery auslesen
if DB_SOpen(oSQLiteDB, 'SELECT * FROM S_ANRED LIMIT 3', oSQLiteQuery) then begin
    while not(oSQLiteQuery.Eof) do begin
        ShowMessage('TEST xQuery erfolgreich: ' + oSQLiteQuery.A2C('AR_NAME'));
        oSQLiteQuery.Next;
    end;
end else begin
    ShowMessage('TEST xQuery Fehler');
end;