Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ZEOS: MySQL Fehler ausgeben lassen? (https://www.delphipraxis.net/70055-zeos-mysql-fehler-ausgeben-lassen.html)

JPSelter 24. Mai 2006 12:23

Datenbank: Firebird • Version: 1.6 • Zugriff über: ZEOS 6.1.5

ZEOS: MySQL Fehler ausgeben lassen?
 
Gibt es eine Möglichkeit, an den direkten Verursacher einer Exception ranzukommen? Ich habe nun eine Datenbank erstellt und teste gerade einen CREATE TABLE Befehl. Da ist aber ein Fehler drin, nur welcher, das wüsste ich gerne. Bei PHP benutze ich dann immer mysql_error(), da steht dann sowas drin.

Angel4585 24. Mai 2006 12:26

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
sowas? :-D
Delphi-Quellcode:
try
  Query.ExecSQL;
except
  on e:Exception do
    ShowMessage(e.Message);
  end;

JPSelter 24. Mai 2006 12:38

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Ja sowas ;) Danke!

Wo wir schon dabei sind... was stimmt hier nicht?

Delphi-Quellcode:
ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('CREATE TABLE protokolle ('+
    'id INT NOT NULL PRIMARY_KEY, '+
    'basetype VARCHAR(64) NOT NULL, '+
    'source VARCHAR(128) NOT NULL, '+
    'member MEDIUMTEXT NOT NULL, '+
    'distribution MEDIUMTEXT NOT NULL, '+
    'nextdate INT NOT NULL'+
    ');');
  ZQuery1.ExecSql;
Er meckert danach mit Fehlernr. -104, Token unknown und invalid Token...

Angel4585 24. Mai 2006 12:50

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Hast du die Query mit ner TZConnection verbunden?
Er muss ja wissen win welche DB er das schreiben soll :zwinker:

BTW: ich würd das so machen:
[quote="JPSelter"]
Delphi-Quellcode:
ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('CREATE TABLE IF NOT EXISTS protokolle ('+
    'id INT NOT NULL AUTO_INCREMENT, '+
    'basetype VARCHAR(64) NOT NULL, '+
    'source VARCHAR(128) NOT NULL, '+
    'member MEDIUMTEXT NOT NULL, '+
    'distribution MEDIUMTEXT NOT NULL, '+
    'nextdate INT NOT NULL, '+
    'PRIMARY KEY(id));');
  ZQuery1.ExecSql;
quote]

was soll eigentlich in die MEDIUMTEXT-Felder rein? ich nehm für längere Texte immer BLOB

JPSelter 24. Mai 2006 13:00

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
In das Feld soll eine Liste von Personennamen rein, TEXT ist mir da zu lang, und VARCHAR zu kurz. Oder gibts da was geeigneteres für?

Ich habe mal klein angefangen, und endlich einen Befehl erfolgreich abgeschickt:

Delphi-Quellcode:
ZQuery1.SQL.Text:='CREATE TABLE test ('+
    'id INT NOT NULL, '+
    'id2 INT'+
    ')';
Füge ich nun PRIMARY_KEY oder IF NOT EXISTS hinzu, meckert er, dass er das alles nicht kennen würde. Wieso?

Delphi-Quellcode:
ZQuery1.SQL.Text:='CREATE TABLE IF NOT EXISTS test ('+
    'id INT NOT NULL PRIMARY_KEY, '+
    'id2 INT'+
    ')';
Machts eigentlich einen Unterschied, ob ich .SQL.Add oder .SQL.Text benutze?

MagicAndre1981 24. Mai 2006 13:05

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Zitat:

Zitat von JPSelter
Machts eigentlich einen Unterschied, ob ich .SQL.Add oder .SQL.Text benutze?

Bei Add wird an die TStrings von SQL einfach der neue Text drangehangen und da kann es dazu kommen, dass dann mehrere SQL-Befehler drin stehen, diedu aber gar nicht haben willst. Also gleich auf Text zugreifen, oder vorher Clear aufrufen.

Angel4585 24. Mai 2006 13:06

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Hmm.. in der Überschrift steht das du mit MySQL arbeitest un in deinem ersten Post steht was von Firebird.. mit was arbeitest du denn nu? :gruebel:

JPSelter 24. Mai 2006 13:09

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Also ich verstehe das so:

Delphi->ZEOS->Firebird Embedded Server->MySQL

;)

MagicAndre1981 24. Mai 2006 13:11

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Zitat:

Zitat von JPSelter
Also ich verstehe das so:

Delphi->ZEOS->Firebird Embedded Server->MySQL

Ich versteh grad nix mehr :? :gruebel:

Angel4585 24. Mai 2006 13:12

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Zitat:

Zitat von MagicAndre1981
Zitat:

Zitat von JPSelter
Also ich verstehe das so:

Delphi->ZEOS->Firebird Embedded Server->MySQL

Ich versteh grad nix mehr :? :gruebel:

:shock: ich schliess mich an ich verstehs au net

mit Delphi -> ZEOS -> MySQL-Server sollte es gehn aber Firebird hat da nix zu suchen

JPSelter 24. Mai 2006 13:17

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Vielleicht liegt das Missverständnis in meinen Worten "mySQL"... vielleicht sollte ich es "SQL" nennen. Ich lasse im Applikationsverzeichnis den Firebird Embedded Server laufen, auf den werden die Daten gespeichert, mit SQL-Befehlen, die über ZEOS laufen. ICH bin hier der N00b der nichts weiss ;)

JPSelter 24. Mai 2006 13:18

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Zitat:

Zitat von JPSelter
Vielleicht liegt das Missverständnis in meinen Worten "mySQL"... vielleicht sollte ich es "SQL" nennen. Ich lasse im Applikationsverzeichnis den Firebird Embedded Server laufen, auf den werden die Daten gespeichert, mit SQL-Befehlen, die über ZEOS laufen. ICH bin hier der N00b der nichts weiss ;)

Mal abgesehen davon muss ich jetzt eh alles wieder auf Eis legen... ich sehe gerade, dass der Embedded Server nicht für mich funktioniert :( Mehr dazu im anderen Thread hier in der Nähe...

Angel4585 24. Mai 2006 13:27

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Wenn das so ist..

Also wenn ich dich recht verstanden hab bist du mit der Firebird-DB verbunden.Richtig?

D.h. du hast eine TZConection auf deinem Formular bei der die Eigenschaft "Connected" den Wert "True" hat.

Ausserdem hast du eine TZQuery-Komponente bei der unter "Connection" die TZConnection-Komponente eingetragen ist. Richtig?

dann musst du dir jetzt einmal die Firebird-Doku anschauen und schauen welche Datentypen Firebird akzeptiert, denn "SQL <> SQL".

Edit: Naja das hat an sich ja nichts mit dem Embedded Server zu tun.. ich hab hier im lokalen Firmennetzwerk einen MySQL Server laufen auf den alle Mitarbeiter bzw. die Programme hier zugreifen, das könntest du bei dir ja auch machen.

JPSelter 24. Mai 2006 13:32

Re: ZEOS: MySQL Fehler ausgeben lassen?
 
Jepp, soweit war ich. Funktionierte soweit, bis auf die speziellen Befehle. Am besten gehts nun im anderen Thread hier weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz