Einzelnen Beitrag anzeigen

Delbor

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

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 13:37
Hi zusammen

Der Abruch erfolgt gleich im erstem Statementt: (Hier das 2.)
Delphi-Quellcode:
function TDMLSQLite.Createkategorien_tabelle:String;
 var SQLString: String;
begin
  SQLString := 'CREATE TABLE "ContentMasterData"."kategorien_tabelle"('+
                            '"Kath_ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("Kath_ID">=0),'+
                            '"Kategorie" VARCHAR(120) NOT NULL);';
  Result := SQLString;
end;

function TDMLSQLite.Createbilddescribetabelle :String;
 var SQLString: String;
begin
  SQLString := 'CREATE TABLE ContentMasterData.bilddescribetabelle('+
                                '"BilddesribeID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("BilddesribeID">=0),'+
                                '"bildtabelle_idBild" INTEGER NOT NULL CHECK("bildtabelle_idBild">=0),'+
                                '"bildkatID" INTEGER NOT NULL CHECK("bildkatID">=0),'+
                                '"bildname" VARCHAR(45),"Dateipfad" VARCHAR(250),"bildbeschreibung" VARCHAR(800),'+
                                '"bildlegende" VARCHAR(300),"Author" VARCHAR(250),'+
                                'CONSTRAINT "fk_bilddescribetabelle_bildtabelle1" '+
                                  'FOREIGN KEY("bildtabelle_idBild")'+
                                  'REFERENCES "bildtabelle"("idBild"));'+
  'CREATE INDEX "ContentMasterData"."bilddescribetabelle.fk_bilddescribetabelle_bildtabelle1_idx" ON"bilddescribetabelle" ("bildtabelle_idBild");';
  Result := SQLString;
end;
Wie man hier sieht, habe ich im unteren Statement in der 1. Zeile die doppelten Anführungszeichen entfernt. Allerdings erst vor einemm zweiten Durchlauf. Die Fehlermeldung lautete zwar gleich, aber der Datenbankname endete diesmal mit einem Hochkomma.
Zitat:
---------------------------
Im Projekt SQLiteTestProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: unknown database ContentMasterData' aufgetreten.
---------------------------
Dann hab ich noch einen draufgesetzt und die Datenbankbezeichnung weggelassen. Das Statement jetzt:
Delphi-Quellcode:
  SQLString := 'CREATE TABLE "bilddescribetabelle"('+
                                '"BilddesribeID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("BilddesribeID">=0),'+
                                '"bildtabelle_idBild" INTEGER NOT NULL CHECK("bildtabelle_idBild">=0),'+
                                '"bildkatID" INTEGER NOT NULL CHECK("bildkatID">=0),'+
                                '"bildname" VARCHAR(45),"Dateipfad" VARCHAR(250),"bildbeschreibung" VARCHAR(800),'+
                                '"bildlegende" VARCHAR(300),"Author" VARCHAR(250),'+
                                'CONSTRAINT "fk_bilddescribetabelle_bildtabelle1" '+
                                  'FOREIGN KEY("bildtabelle_idBild")'+
                                  'REFERENCES "bildtabelle"("idBild"));'+
  'CREATE INDEX "ContentMasterData"."bilddescribetabelle.fk_bilddescribetabelle_bildtabelle1_idx" ON"bilddescribetabelle" ("bildtabelle_idBild");';
  Result := SQLString;
end;
Und die Fehlermeldung, als der Index erzeug werden sollte:
Zitat:
---------------------------
Im Projekt SQLiteTestProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: table "bilddescribetabelle" already exists' aufgetreten.
---------------------------
Im Anhang zeigt ein Jpeg die im SQLExpert geöffnete Datenbank....

Ja, ich denk, dann werd' ich mal...


Gruss
Delbor
Miniaturansicht angehängter Grafiken
anzeige-sqliteexpert-2.jpg  
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