Werte in Datenbank werden gerundet (c# zugriff)?

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

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin
spam1BonBonn 
Fragesteller
 20.04.2020, 11:33

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.

0

Versuche den Dezimaltrenner für die Datenbank immer gleich zu halten.

"5.32" und nicht "5,32"

MFG xGlumi

Woher ich das weiß:eigene Erfahrung – Programmier/IT Erfahrung seit 2009 (Freizeit und Beruf)
spam1BonBonn 
Fragesteller
 20.04.2020, 11:29

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

0