![]() |
Datenbank: mysql • Version: 5 • Zugriff über: ZEOS
sql-satement mit variablen
hallo zusammen,
ich möchte eine sqlstatement ausführen: SQLStatement.add('insert into tabelle1 (nutzername, rechnerip )values(:name, :ip) '); mit festen werten funtioniert das so ( die werte in hochkomma) auch, bei dem Einsatz von Variablen hab ich schon alles Mögliche vom : bis QuotedStr(variable) versucht, irgendwo ist immer ein fehler im Statement.:-( Wie ist die richtige syntax ? EDIT: SQLStatement ist eine stringliste die mit: ZQuery1.SQL := SQLStatement; an die ZQuery übergeben wird. Danke Gruss KH |
Re: sql-satement mit variablen
Wie sieht die Stringliste denn anschließend inhaltlich aus?
|
Re: sql-satement mit variablen
Zitat:
INSERT INTO tabelle1 (nutzername, rechnerip) VALUES (:name, :ip); kann also so nicht funktionieren :-( |
Re: sql-satement mit variablen
Hallo,
was für ein Typ/Klasse ist sqlstatement? Prüf mal, ob Deine Componente ein Attribut ParamCheck hat und ob das auf True steht. Das gibt es zumindest bei TQuery und TAdoQuery. |
Re: sql-satement mit variablen
Werden die Parameter auch gesetzt?
|
Re: sql-statement mit variablen
Zitat:
SQLStatement: TStringlist; die Query ist ne TZQuery und paramcheck steht auf true EDIT: folgende syntax funktioniert :-( SQLStatement.add(' Insert into tabelle1 set nutzername =' + QuotedStr(nutzername) ); leider hab ich so halt nur den einen wert :-( |
Re: sql-satement mit variablen
Delphi-Quellcode:
So besser? Wieso befüllst Du eigentlich eine Stringliste für die Statements, das hab ich bisher noch nicht ganz verstanden.
Stringlist.Add(Format('INSERT INTO tabelle1 (nutzername, rechnerip) VALUES (%s, %s)',[QuotedStr(name),QuotedStr(ip)]));
|
Re: sql-satement mit variablen
Hallo,
Ist das denn noch richtige SQL-Syntax?
Delphi-Quellcode:
Das müsste dann doch funktionieren:
SQLStatement.add(' Insert into tabelle1 set nutzername =' + QuotedStr(nutzername) );
Delphi-Quellcode:
DeddyH's Variante ist natürlich auch ok.
SQLStatement.add('insert into tabelle1 (nutzername, rechnerip )values(' + QuotedStr(nutzername) + ',' + QuotedStr(ip) + ')');
|
Re: sql-satement mit variablen
folgendes statement funktioniert:
SQLStatement.add('INSERT INTO tabelle1 ( nutzername, rechnerip ) VALUES ( "test", "testip" )' ); dagegen bringt : SQLStatement.add('INSERT INTO tabelle1 ( nutzername, rechnerip ) VALUES ( "test", :rechnerip )' ); den Fehler: colnum rechnerip can no be NULL :-( wo steckt der Fehler? |
Re: sql-satement mit variablen
SQL-Parameter müssen ja auch befüllt werden.
Delphi-Quellcode:
ZQuery1.SQL.Add('INSERT INTO Tabelle1(rechnername, rechnerip) VALUES(:name, :ip');
ZQuery1.ParamByName('name').AsString := 'Heinzchen'; ZQuery1.ParamByName('ip').AsString := '192.168.1.200'; |
Re: sql-satement mit variablen
Zitat:
Die stringliste hab ich verwendet, weil ZQuery.sql:= 'blabla'; folgende fehlermeldung brachte: Error: Incompatible type for arg no. 1: Got "Constant String", expected "TStrings" hab ich da was übersehen ?? |
Re: sql-satement mit variablen
müsste auch
Delphi-Quellcode:
heißen
ZQuery.sql.add('blabla')
und dashier
Delphi-Quellcode:
mit :rechnerip steht da ein leerer Parameter und den kann die Datenbank nicht verwerten.
SQLStatement.add('INSERT INTO tabelle1 ( nutzername, rechnerip ) VALUES ( "test", "rechnerip" )' );
|
Re: sql-satement mit variablen
Zitat:
SQLStatement.add(' Insert into tabelle1 set nutzername =' + QuotedStr(nutzername) ); ohne die parameter zu setzen? |
Re: sql-satement mit variablen
Weil Du da ja auch keine SQL-Parameter benutzt.
|
Re: sql-satement mit variablen
Zitat:
danke dir |
Re: sql-satement mit variablen
Hallo,
weil du dort keine Parameter benutzt! Ein Parameter fängt mit : an. Heiko |
Re: sql-satement mit variablen
Zitat:
vor lauter wechseln zwischen : und QuotedStr hab ich das glatt übersehen ich danke euch EDIT: funtioniert :roll: Gruss KH |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 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