Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Exception bei SQL Befehl über MySqlDac (https://www.delphipraxis.net/64874-exception-bei-sql-befehl-ueber-mysqldac.html)

Andidreas 9. Mär 2006 13:40

Datenbank: MySql • Version: 4.0.19 • Zugriff über: MySqlDac

Exception bei SQL Befehl über MySqlDac
 
hi,

ich hab grad ein kleines problem, vielleicht kann mir ja hier jemand weiter helfen...

ich mach gerade meine 2 applikation in delphi, diese soll folgende funktion haben,

der benutzer gibt einen sql befehl in ein memo feld ein, und über diesen sql befehl soll anschließend auf meine mysql db zugegriffen werden und daten für den aufruf des list & label generators ermittelt werden..

der sql befehl im programm sieht wie folgt aus:

Delphi-Quellcode:
 Try
  With (dbm.VariableQuery) Do
  Begin
      Active := False;
      SQL.Clear;
      SQL.Add('"'+ Memo1.Text +'"');
      Active := True;
  End;
  Except
      MessageDlg('Exception in Define Variables SQL Command!' +#13
                +'Please Check the SQL Command!', mtwarning, [mbok],0);
  End;
der von mir als benutzer des programms eingegeben sql befehl sieht so aus:

SQL-Code:
Select Feld1 From Datei
eigentlich ja ganz simpel aber jedes mal kommt ne exception und ich hab keinen plan warum...

in meiner 1. Anwendung, hab ich schon mal sowas ähnliches gemacht, denn da hab ich bei der where bedingung, ein edit feld für die wert angabe genommen, und des geht auch...
aber warum das hier net geht... keine ahnung... :wiejetzt:



hoffentlich könnt ihr mir weiterhelfen...

oder liegt des vielleicht daran das ich ein memo feld nehm???

Jelly 9. Mär 2006 13:47

Re: Exception bei SQL Befehl über MySqlDac
 
Warum setzt Du zusätzlich noch "" um deinen SQL Befehl ?

Andidreas 9. Mär 2006 13:55

Re: Exception bei SQL Befehl über MySqlDac
 
*gg* das hab ich mir grad auch gedacht und des weg gemacht ^^
jetzt gehts :lol:


aber zur erklärung warum ich das gemacht hab... denkfehler meinerseits und wahrscheinlich anfänger dummheit...

der sql befehl von meiner 1. programm sieht ungefähr so aus...

Delphi-Quellcode:
SQL.Add('Select Feld1, Feld2 '
  + 'From Datei1 '
  + 'Where Feld1 = "'+ edit_snr.Text +'" ');
naja aber die beiden " brauch ich ja weil der wert in der where klausel ein alphanummerischer wert is
oder seh ich des falsch :gruebel:



naja aber in meinem jetztigen programm funkts so...:

Delphi-Quellcode:
 Try
  With (dbm.VariableQuery) Do
  Begin
      Active := False;
      SQL.Clear;
      SQL.Add(Memo1.Text);
      Active := True;
  End;
  Except
      MessageDlg('Exception in Define Variables SQL Command!' +#13
                +'Please Check the SQL Command!', mtwarning, [mbok],0);
  End;

Jelly 9. Mär 2006 14:37

Re: Exception bei SQL Befehl über MySqlDac
 
Zitat:

Zitat von Andidreas
Delphi-Quellcode:
SQL.Add('Select Feld1, Feld2 '
  + 'From Datei1 '
  + 'Where Feld1 = "'+ edit_snr.Text +'" ');

Nutze lieber:
Delphi-Quellcode:
SQL.Add('Select Feld1, Feld2 '
  + 'From Datei1 '
  + 'Where Feld1 = '+ QuotedStr(edit_snr.Text) );
Da Du mit deiner Methode Probleme kriegst, wenn in deinem Editfeld ' oder " eingegeben werden.
Ausserdem ist bei SQL Standard, die Strings in einfache Quotes zu setzen (') anstatt in doppelte (").

Noch besser ist sogar die Verwendung von Parametern in deiner Abfrage.

Delphi-Quellcode:
SQL.Add('Select Feld1, Feld2 '
  + 'From Datei1 '
  + 'Where Feld1 = :SNR');
Parameters.ParamByName('SNR').Value := edit_snr.text ;

Andidreas 14. Mär 2006 07:40

Re: Exception bei SQL Befehl über MySqlDac
 
danke für denn tipp...


werd ich bei gelegenheit mal ausprobieren, und mein ergebniss posten...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 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