AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# Programm zur Überprüfung der SQL Syntax
Thema durchsuchen
Ansicht
Themen-Optionen

Programm zur Überprüfung der SQL Syntax

Ein Thema von mumu · begonnen am 11. Mär 2005 · letzter Beitrag vom 30. Mai 2005
Antwort Antwort
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#1

Programm zur Überprüfung der SQL Syntax

  Alt 11. Mär 2005, 17:06
Datenbank: MySQL • Zugriff über: ODBC
kennt jemand ein gutes programm, dass einem fehler in der sql syntax besser beschreibt?

ich hab z.b. folgendes statement:
SQL-Code:
INSERT INTO BestellDaten (ID, EMail, Bestellart, BestellungDatum, Kundennummer, Rechnungsnummer, Bestellnummer, Bemerkung)
       VALUES (1000, 'test@bla.de', 1, '2005-12-03 12:13:03', (select max(Kundennummer)+1 from BestellDaten), 0, (select max(Bestellnummer)+1 from BestellDaten), '')
da bekomm ich folgenden fehler:
"Excute Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select max(Kundennummer)+1 from BestellDaten), 0, (select max(B (1064)"


hat jemand ne idee was da falsch ist?
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Programm zur Überprüfung der SQL Syntax

  Alt 11. Mär 2005, 17:24
wahrscheinlich ein Problem mit
select max(Kundennummer)+1 from BestellDaten bin mir nicht sicher, ob das "+1" überhaupt geht, und wenn eher ")select max(Kundennummer) from BestellDaten)+1"

Ein Prog zur Syntaxprüfung kenn ich leider nicht.
Ansgar
  Mit Zitat antworten Zitat
mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#3

Re: Programm zur Überprüfung der SQL Syntax

  Alt 11. Mär 2005, 17:45
also am + 1 liegts net, habs schon weggelassen.

hab das ganze aber jetzt so gelöst:

INSERT INTO BestellDaten (ID, EMail, Bestellart, BestellungDatum, Kundennummer, Rechnungsnummer, Bestellnummer, Bemerkung)
(SELECT 1000, 'test@bla.de', 1, '2005-12-03 12:13:03', Max(Kundennummer)+1, 0, Max(Bestellnummer)+1, '' FROM BestellDaten);



aber kennt jemand ein gutes syntax check programm?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Programm zur Überprüfung der SQL Syntax

  Alt 30. Mai 2005, 11:39
Ein SQL-Syntaxcheck bringt Dir nicht so viel, weil mySQL keine SQL-DB ist. Sie tut bloss so.
mySQL *IST* doch ein Syntaxchecker, es sagt dir doch genau, das da was nicht stimmt. Wesentlich genauer wäre ein Syntaxcheckomat auch nicht.

Meine persönliche Meinung ist, das deine Updateanweisung grauslig ist. Gibt es denn keine anständigen Generatoren in mySQL? AutoInc-Felder? Na, egal.

Versuch doch mal, die 'select' Dinger in der INSERT-Anweisung durch 12345 oder so zu ersetzen. Das sollte gehen.
Dann ist es so, das eine Subquery immer in Klammern stehen sollte (jedenfalls bei MsSQL), also z.B. so:
SQL-Code:
Insert into Foo
  (Bar, Zuff, Nick)
Values
  ('Bar',
 (select max(Zuff) + 1 from Foo),
 (select max(Nick) + 1 from Foo)
  )
Aber nochmal: Grauslig, ich würde sogar sagen:
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Programm zur Überprüfung der SQL Syntax

  Alt 30. Mai 2005, 12:05
Zitat von alzaimar:
Ein SQL-Syntaxcheck bringt Dir nicht so viel, weil mySQL keine SQL-DB ist. Sie tut bloss so.
Aha. Und ich dachte eine SQL-DB wird dafür definiert das ich SQL Befehle benutzen kann.

Zitat:
Gibt es denn keine anständigen Generatoren in mySQL? AutoInc-Felder? Na, egal.
Leider nicht richtig. Es gibt zwas die Option AutoInc für ein Feld.... aber eben nur für ein Feld pro Tabelle.
Und SPs werden wohl erst ab Version 5 unterstützt werden.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Programm zur Überprüfung der SQL Syntax

  Alt 30. Mai 2005, 12:22
@Sharky: Eine SQL-DB ist eine DB, die den ANSI-SQL Stardard umsetzt. Dazu gehört nicht nur, das sie SQL versteht (das tut DBase III auch, ist aber noch lange keine SQL-DB). mySQL ist eine Tabellenverwaltung, die SQL-Kommandos interpretieren kann. mySQL setzt den ANSI-Standard nicht um (ab V5 soll sie das aber mehr-oder-weniger tun).
Zum Standard gehören u.a. Transaktionen, Views, Stored Procedures, Trigger usw, aber auch die Tatsache, das z.B. sämtliche Strukturinformationen (Views, Tabellennamen, Felder und Feldtypen usw.) in der DB selbst einseh- und änderbar ist.

Zu einer SQL-DB gehört aber auch, das ich den Rechner im laufenden Betrieb ausschalten kann, ohne das die DB darunter leidet. Es muss gewährleistet sein, das höchstens die letzte offene Transaktion nicht gespeichert wurde. Weiterhin muss sie in der Lage sein, jede DB nach einem Crash wieder herzustellen. MSSQL z.B. rödelt nach einem Crash wie ein Weltmeister auf der Platte rum, weil es eine Uraltversion der Daten (die letzte als sicher geltende Version (Stichtwort:CHECKPOINT) nimmt, und die in der Log-Datei enthaltenen Aufzeichnungen über Änderungen etc. so lange anwendet, bis alle Daten wieder ganz sind.

Preisfrage: Was ist die höchste Anzahl von Datensätzen in einer mySQL-DB, die bei einem Rechnercrash zerstört wird?

Nebenbei würde ein SQL-Syntaxchecker auch bei Oracle, MSSQL etc. nix bringen, weil alle den Standard umsetzen, aber sich keiner dran hält. So ist das mit Standards: Alle finden's toll, Alle setzen es um, Alle machen es besser, und Keiner hält sich dran.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:55 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