AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankeintrag funktioniert nicht!
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankeintrag funktioniert nicht!

Ein Thema von Mr. MC · begonnen am 18. Jan 2009 · letzter Beitrag vom 18. Jan 2009
Antwort Antwort
Mr. MC

Registriert seit: 13. Mai 2007
5 Beiträge
 
#1

Datenbankeintrag funktioniert nicht!

  Alt 18. Jan 2009, 13:23
Datenbank: MySQL • Zugriff über: ODBC
Hier der Quellcode, um die Daten zu ermitteln.(*funzt*):
Delphi-Quellcode:
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;
Und hier der Quelltext zur Datenbankausführung:
Delphi-Quellcode:
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;
Leider weint Delphi immer folgende Meldung mir entgegen:
Zitat:
Rechtes Anführungszeichen fehlt!
Habe mal die Funktionen einzel getestet. Dabei kam raus, dass der Name an der Fehlermeldung schuld ist und die anderen Werte in die Datenbank nicht eingetragen werden, weil sie nicht gelesen werden konnten, aber wenn man die Daten in einer txt-Datei speichert kommen alle Daten korrekt an.

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]
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Datenbankeintrag funktioniert nicht!

  Alt 18. Jan 2009, 13:25
Benutz doch einfach SQL-Parameter und Du hast das Problem nicht. Außerdem besteht dann auch keine Gefahr durch SQL-Injection.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Datenbankeintrag funktioniert nicht!

  Alt 18. Jan 2009, 13:39
Stand der String tatsächlich so in zwei Zeilen? Falls ja, fehlte ein rechtes Anführungszeichen.

Etwas schöner formatiert:

Delphi-Quellcode:
const _statm1 =
  'insert into login '
+ 'values (NULL, (Select ID from Notebookwagen where name=''%s''),''%s'',''%s'')';
Wichtig beim Umbruch eines SQL Statements als Stringliteral ist das Leerzeichen (hier am Zeilenende nach login). Sonst gibt es später einen Laufzeitfehler.

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 (...)
Michael Justin
habarisoft.com
  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 15:18 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