AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Automatiach erstellte Syntax

Automatiach erstellte Syntax

Ein Thema von Delbor · begonnen am 5. Sep 2017 · letzter Beitrag vom 9. Sep 2017
 
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Automatiach erstellte Syntax

  Alt 5. Sep 2017, 20:47
Datenbank: SQLite • Version: 253.1.0.102 • Zugriff über: FireDac
Hi zusammen

In meinem Testprogrämmchen hab ich in den letzten Tagen endlich mal auch das getestet, wofür es gedacht war: SQLite und das erstellen einer einfachen Datenbank:
Delphi-Quellcode:
procedure TDMLSQLite.CreateAndConnectDB(Sender: TObject);
  var SQLSring: String;
begin
  try
    DMLSQLite.FDSQLiteConnection.Connected := false;
    DMLSQLite.FDSQLiteConnection.Params.Values['Database']:='F:\SQLiteDatabases\'+ 'DVZO.db';
    DMLSQLite.FDSQLiteConnection.Params.Values['FailIfMissing']:='False';
    DMLSQLite.FDSQLiteConnection.Connected := true;
    SQLSring:='CREATE TABLE Bildtabelle (BildID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, Bildname VARCHAR(50), Bitmap BLOB, NEF BLOB);';
    DMLSQLite.FDSQLiteConnection.ExecSQL(SQLSring);
  except
    on E: EDatabaseError do
     ShowMessage('Exception raised with message' + E.Message);
  end;
end;
Das obige Codeeschnipsel richtet sich nach Beiträgem aus diesem Forum und tut genau das, was es soll. Mit einer passenden Extension versehen (*.sqlite statt *.db) konnte ich sie auch in einer Freeware-SQLite-DB aus dem Netz öffnen. Soweit so gut. Aber nun stellte sich mir die Frage, meine MySQL-Bilderdatenbank auf SQLite umzubauen - also hab ich noch was in Google gesucht. Und fand da prompt ein offenbar in Python geschriebenes Plug-In für MySQL Workbench.
Damit konnte ich das MySQL-Script der DB nach SQLite portieren.Ein Schnipsel aus dem resultierenden SQLite-Script:
Delphi-Quellcode:
PRAGMA foreign_keys = ON

-- Schema: ContentMasterData
ATTACH "ContentMasterData.sdb" AS "ContentMasterData";
BEGIN;
CREATE TABLE "ContentMasterData"."bildtabelle"(
                                "idBild" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("idBild">=0),
                                "Thumbnail" BLOB,"Bitmap" BLOB,
                                "Jpeg" BLOB,
                                "FolderId" VARCHAR(32));

CREATE TABLE "ContentMasterData"."galerietabelle"(
                                "Gallery_ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("Gallery_ID">=0),
                                "GalleryName" VARCHAR(50));

CREATE TABLE "ContentMasterData"."CSS-Tabelle"(
                                "idCSS" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("idCSS">=0),
                                "PageCSS" LONGTEXT NOT NULL,"MenueCSS" LONGTEXT NOT NULL);
Grundsätzlich auch das kein grosses Problem - ich denke, ich packe die einzelnen Createtable-Konstrukte in jeweils eine Funktion und packe sie dann folgendermassen in meine DB-Createprozedur:
Delphi-Quellcode:
SQLSring:= Funktion1;
SQLSring:= Funktion2;
Eine offene Fage bleibt aber doch: wie gehe ich in Delphi mit den ersten Zeilen um? Wobei Zeile 1 offenbar ein Kommentar ist und somit wegfällt:

Delphi-Quellcode:
PRAGMA foreign_keys = ON

-- Schema: ContentMasterData
ATTACH "ContentMasterData.sdb" AS "ContentMasterData";
BEGIN;
Das BEGIN in derletzten Zeile stammt von MySQL Workbench; am Schluss des Dokuments steht ein Commit, das ich als das Gegenstück zu BEGIN interptiere, also eigentlich einem end; in Delphi entspricht. Beide können also einfach weg.
Was aber mache ich mit ATTACH und "PRAGMA foreign_keys = ON"? Das "ON" war übrigens original ein "OFF" und wurde von mir geändert.

ATTACH dient offenbar zu Abfragen mehrere DB's, und deshalb denke ich, kann es ebenfalls weg.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz