Wieder mal bin ich zu dumm zum sche... programmieren!
Hab eine simple Tabelle, eine XML-Datei, deren Werte ich in die Tabelle einlesen will und ein C#-Programm, das dies alles erledigen soll.
Mein Problem ist, dass die decimal-Werte der XML-Datei nie als Kommazahl in der DB gespeichert werden, obwohl alles als decimal deklariert ist.
DB sieht folgendermaßen aus:
mNodeID, uniqueidentifier
mNodeNR, bigint
mTimestamp, datetime
mUser, nvarchar(100)
mLatitude, decimal
mLongitude, decimal
c#-Programm so:
Code:
SqlCommand dbcom = new SqlCommand("NodeInput", dbconn);
dbcom.CommandType = CommandType.StoredProcedure;
SqlParameter dbpar1 = dbcom.Parameters.Add("@id", SqlDbType.BigInt);
dbpar1.Value = element.Attribute("id").Value;
SqlParameter dbpar2 = dbcom.Parameters.Add("@lat", SqlDbType.Decimal);
dbpar2.Value = System.Convert.ToDecimal(element.Attribute("lat").Value,System.Globalization.CultureInfo.InvariantCulture);
SqlParameter dbpar3 = dbcom.Parameters.Add("@lon", SqlDbType.Decimal);
dbpar3.Value = System.Convert.ToDecimal(element.Attribute("lon").Value, System.Globalization.CultureInfo.InvariantCulture);
SqlParameter dbpar4 = dbcom.Parameters.Add("@user", SqlDbType.NVarChar, 100);
dbpar4.Value = element.Attribute("user").Value;
SqlParameter dbpar5 = dbcom.Parameters.Add("@timestamp", SqlDbType.DateTime);
dbpar5.Value = element.Attribute("timestamp").Value;
int sqlcount = dbcom.ExecuteNonQuery();
und die angesprochene Stored Procedure folgendermaßen:
Code:
ALTER PROCEDURE [dbo].[NodeInput]
(
@id bigint,
@Timestamp datetime,
@user nvarchar(100),
@lat decimal,
@lon decimal
)
AS
BEGIN
SETNOCOUNTON;
INSERT INTO ccNodes(mNodeID, mNodeNR, mTimestamp, mUser, mLatitude, mLongitude)
VALUES (NewID(), @id, @timestamp, @user, @lat, @lon);
END
Ich hab schon alles mögliche versucht, aber immer wieder das selbe: 47.5637201 wird entweder als 475637201 oder als 48 gespeichert...
Ich hoffe, irgendjemand kann mir da helfen. Ich dreh schon durch 