Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - float in mysql ?!


tomycat - Do 23.07.15 11:11
Titel: float in mysql ?!
hallo,

meine Tablle:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
CREATE TABLE rechnunginhalt (
  re int(11) NOT NULL auto_increment,
  zeit varchar(255) default NULL,
  datum varchar(255) default NULL,
  wer int(25) default NULL,
  umsatz float(25) default NULL,
  inhalt varchar(2000) default NULL,

  PRIMARY KEY  
);


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
float summe = 0;
summe = 11.9f;
///////////// rechung speichern..
q = "insert into artikel.rechnunginhalt (re,datum,zeit,umsatz,inhalt,wer) values('" 
  + rechnungsnummer.Text + "',  '"  ///// kein Problem
  + buch_datum + "','"  ///// kein Problem
  + buch_zeit +  "','" ///// kein Problem
  + summe + "','"       ////////// <---------------- geht nicht.
  + buch_text +  "'," ///// kein Problem
  + aktiv_user + ")";///// kein Problem

ExecuteQuery(q);

Ich bekomme die Fehlermeldung:
(re)Data truncated for column'umsatz' at row 1

Moderiert von user profile iconTh69: XML-Tags hinzugefügt
Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: .NET Version 1.0 entfernt.


Ralf Jansen - Do 23.07.15 11:40

Du benutzt summe wie einen Text es ist aber kein Text es ist ein float.

Benutze auf keinen Fall einfach string concatenation um ein SQL Statement mit Variablen aufzufüllen. Das wirst du nur mit viel Aufwand dauerhaft funktionierend hinbekommen. Von den Security Problemen mal abgesehen.
Benutze Parameter [http://openbook.rheinwerk-verlag.de/visual_csharp_2012/1997_32_005.html#dodtp36a65484-5a09-4c30-8b79-6ad0b96fd635] die das Typgenau machen. Dann bekommst du auch immer das passende Format. Der Link bezieht sich aus Sql Server das sollte für mysql ähnlich/gleich sein. Aber besser in der entsprechenden Doku des von dir verwendeten mysql Connectors nachschlagen wie es im Detail auszusehen hat.

Warum behauptest du immer das wäre das Framework 1.0?