![]() |
Datenbank: MySQL • Zugriff über: ODBC
Datenbankeintrag funktioniert nicht!
Hier der Quellcode, um die Daten zu ermitteln.(*funzt*):
Delphi-Quellcode:
Und hier der Quelltext zur Datenbankausführung:
function TService1.get_computer_ID: string;
var dw : DWORD; buffer : array of char; begin setlength(buffer, 127); GetComputerName(@buffer [0], dw); setlength(result, dw); move (buffer [0], result [1], dw); end; function TService1.get_user_name: string; var dw : DWORD; buffer : array of char; begin setlength(buffer, 127); GetUserName(@buffer [0], dw); setlength(result, dw); move (buffer [0], result [1], dw); //showmessage(result); end; function TService1.get_wagon_name: string; var dw : DWORD; buffer : array of char; begin setlength(buffer, 127); GetComputerName(@buffer [0], dw); setlength(result, dw); move (buffer [0], result [1], dw); delete(result,6,7); end;
Delphi-Quellcode:
Leider weint Delphi immer folgende Meldung mir entgegen:
function TService1.local_DB_transfer: string;
const _statm1 = 'insert into login values (NULL, (Select ID from Notebookwagen where name=''%s''),''%s'',''%s'')'; var s : string; begin s:=Format(_statm1,[get_wagon_name,get_user_name, get_computer_ID]); with query1 do begin sql.Clear; sql.Add(s); execsql; end; end; Zitat:
Warum klappt sql-Befehl nicht und warum weint er wegen dem Namen? [edit=mkinzler]Code-Tag in Delphi-Tag geändert Mfg, mkinzler[/edit] [edit=mkinzler]Den 2. auch noch Mfg, mkinzler[/edit] |
Re: Datenbankeintrag funktioniert nicht!
Benutz doch einfach SQL-Parameter und Du hast das Problem nicht. Außerdem besteht dann auch keine Gefahr durch SQL-Injection.
|
Re: Datenbankeintrag funktioniert nicht!
Stand der String tatsächlich so in zwei Zeilen? Falls ja, fehlte ein rechtes Anführungszeichen.
Etwas schöner formatiert:
Delphi-Quellcode:
Wichtig beim Umbruch eines SQL Statements als Stringliteral ist das Leerzeichen (hier am Zeilenende nach login). Sonst gibt es später einen Laufzeitfehler.
const _statm1 =
'insert into login ' + 'values (NULL, (Select ID from Notebookwagen where name=''%s''),''%s'',''%s'')'; p.s. das INSERT ohne Angabe der Spaltennamen funktioniert bei späteren Tabellenerweiterungen nicht mehr. Besser daher: INSERT INTO LOGIN(FELDNAME1, FELDNAME2, FELDNAME3, FELDNAME4) VALUES (...) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 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 by Thomas Breitkreuz