![]() |
Datenbank: MYSQL • Version: 5.0 • Zugriff über: libmysql.dll
'' String in Datenbank einfügen
Guten Tag wenn ich mit
Delphi-Quellcode:
ein paar Strings in eine Datenbank einfügen will klappt das alles auch soweit ganz gut, nur wenn ein String leer ist werden keine Daten eingefügt :?: Woran kann das liegen? Kann man das irgendwie umgehen?
query:=PChar('INSERT INTO ausgaben(betrageuro,datum,benutzer,verwendung) VALUES ('+QuotedStr(Switchpoint(Stringgrid2.Cells[2,l+1]))+','+QuotedStr(switchdate(Stringgrid2.Cells[1,l+1]))+',012,'+QuotedStr(Stringgrid2.Cells[0,l+1])+')');
|
Re: '' String in Datenbank einfügen
Ich würde (SQL-)Parameter verwenden. Wie ist das Feld in der Datenbank deklariert?
|
Re: '' String in Datenbank einfügen
Das sind sowohl Float als auch VarChar Felder. Was meinst du mit
[quote="mkinzler"]Ich würde (SQL-)Parameter verwenden[quote] :?: |
Re: '' String in Datenbank einfügen
Delphi-Quellcode:
Query.SQL.Text := 'INSERT INTO Tabelle(Feld1,Feld2) VALUES(:wert1,:wert2)';
ParamByName('wert1').AsString := ''; ParamByName('wert2').AsInteger := 1; |
Re: '' String in Datenbank einfügen
hmm irgendwie kommen bei mir da ganz viele Fehlermeldungen:
Delphi-Quellcode:
Hab das so eingebaut:
[Fehler] serverbanking.pas(484): Record, Objekt oder Klassentyp erforderlich
[Fehler] serverbanking.pas(485): Undefinierter Bezeichner: 'ParamByName' [Fehler] serverbanking.pas(485): Operator oder Semikolon fehlt [Fehler] serverbanking.pas(486): Operator oder Semikolon fehlt [Fehler] serverbanking.pas(487): Operator oder Semikolon fehlt [Fehler] serverbanking.pas(488): Operator oder Semikolon fehlt [Fataler Fehler] serverbanking1.dpr(6): Verwendete Unit 'serverbanking.pas' kann nicht compiliert werden
Delphi-Quellcode:
mysql_select_db(_myCon, db);
Query.SQL.Text := 'INSERT INTO einnahmen(betrageuro,datum,benutzer,verwendung) VALUES(:wert1,:wert2,:wert3,:wert4)'; ParamByName('wert1').AsString := cuteuro(Switchpoint(Stringgrid1.Cells[2,i+1])); ParamByName('wert2').AsInteger :=switchdate(Stringgrid1.Cells[1,i+1]); ParamByName('wert3').AsInteger :=012; ParamByName('wert4').AsInteger :=Stringgrid1.Cells[0,i+1]; mysql_real_query(_myCon, query, Length(query)); |
Re: '' String in Datenbank einfügen
Sorry, mein Fehler. Setz mal den Namen des Queries davor (also Query.ParamByName...)
|
Re: '' String in Datenbank einfügen
Delphi-Quellcode:
Query.ParamByName('wert1').AsString := '';
|
Re: '' String in Datenbank einfügen
Der Fehler
Delphi-Quellcode:
kommt jetzt bei jeder Zeile muss ich da irgendwo vorher noch was einbinden oder so?
[Fehler] serverbanking.pas(484): Record, Objekt oder Klassentyp erforderlich
|
Re: '' String in Datenbank einfügen
Du verwendest auch nicht die objektorientierte Abstraktion von delphi sondern eine Umsetzung der nativen Api.
|
Re: '' String in Datenbank einfügen
das heißt für mich so klappt das doch nicht entweder muss ich alles umstellen, oder falls ein String leer ist irgendeine Zeichenkombination da rein schreiben die er beim auslesen wiedererkennt und dann einen leeren Struing ausgibt?
|
Re: '' String in Datenbank einfügen
Hallo wfs12,
statt des Indikator-Strings kannst du einfach NULL (ohne QuotedStr) übergeben oder das Feld ganz aus dem INSERT-Statement verbannen. Wer scheitert eigentlich an dem fehlenden Eingabewert - das INSERT oder deine Switch-Funktionen? Interessant wäre auch der von dir erzeugte Query-Text. Grüße vom marabu |
Re: '' String in Datenbank einfügen
Das INSERT scheitert es klappt auch nicht wenn ich den Text direkt bei dem MYSQL- administrator eingebe also denk ich mal wird die Datenbank mit einem leeren String nicht umgehen können
|
Re: '' String in Datenbank einfügen
Hallo,
hast du NOT NULL Constraints auf Feldern der Tabelle eingerichtet? Gibt es Trigger auf der Tabelle? Kannst du bitte einen Schemaauszug zeigen? Freundliche Grüße |
Re: '' String in Datenbank einfügen
Liste der Anhänge anzeigen (Anzahl: 1)
So hab mal ein Screenshot von dem MYSQL- Administrator angehängt. was meinst du mit Trigger der Tabelle?
|
Re: '' String in Datenbank einfügen
Hallo,
wie ich sehe hast du alle Felder der Tabelle mit NOT NULL angelegt - dann darfst du beim INSERT auch keine NULL-Werte übergeben. Bei einem VARCHAR-Feld ist ein leerer String kein Problem, aber bei einem FLOAT-Feld kann ein leerer String nicht in einen Float-Wert konvertiert werden und das könnte dein Fehler sein. Freundliche Grüße |
Re: '' String in Datenbank einfügen
OK Vielen dank erstmal das heißt also bei meiner switch Funktion sollte ich falls es ein leerer String ist, diesen als '0' nehmen, damit er auch in eine Float Zhal umgewandelt werden könnte, oder?
|
Re: '' String in Datenbank einfügen
Das scheint mir eine gute Idee zu sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 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