Werte in Datenbank werden gerundet (c# zugriff)?
Hallo,
Ich habe ein Programm geschrieben dass mir random werte generiert und diese in eine Datenbank reinschreibt. Wenn ich das Programm bei mir laufen lasse, werden die korrekten Werte (z.B:5,32) in die Datenbank geschrieben. Wenn ich aber einer anderen Person das Programm gebe und die dieses ausführt werden gerundete Werte(z.B:5) in die Datenbank geschrieben. Bei der Ausgabe des SQL-Statements im c# Programm wird auch noch der ungerundete Wert übermittelt. (UPDATE Aktien SET Kurs= '5,32' WHERE Name = 'Dominik';
2 Antworten
Entweder wurde bei der anderen Person in der Tabelle die Spalte nicht als double, float, etc. sondern als integer definiert (beim Anlegen der Tabelle), oder die Umwandlung von x in einen String geht schief, weil auf dem Zielsystem "," als Dezimaltrennzeichen gesetzt ist, bei dir aber ".". MySQL hätte da gern einen Punkt.
using System.Globalization;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
// dann statt dem ..."+x+"..
// ..." + x.ToString(nfi) + "...
Alternativ benutzt man prepared Statements:
https://dev.mysql.com/doc/connector-net/en/connector-net-programming-prepared-preparing.html
Hi Danke für die schnelle Antwort. Ich und die andere Person greifen jeweils auf meine Datenbank zu. wenn bei mir laut console.writeline eine 5.32 generiert wird kommt diese auch in der Datenbank an. Wenn bei der anderen Person (wie schon gesagt gleiches Programm, nicht nur code copy paste) eine 5.32 generiert und ausgegeben wird landet eine 5.00 in der Datenbank obwohl laut console.writeline UPDATE Aktien SET KURS ='5.32' WHERE NAME = 'Dominik' übermittelt wird.
Versuche den Dezimaltrenner für die Datenbank immer gleich zu halten.
"5.32" und nicht "5,32"
MFG xGlumi
Hi, danke für die schnelle Antwort. Die Zahl die generiert wird ist schon die x.xx und nicht x,xx. Nur wenn bei mir im Programm die Zahl z.b 5.32 generiert wird kommt diese auch in der Datenbank an. Bei anderen wird aus 5.32 in der Datenbank eine 5.00