|  |  | |
|  |  | 
| 
 | |||||||
| Programmierung Rat & Tat für Programmierer | 
|  | 
|  | Themen-Optionen | Ansicht | 
|  10.05.2009, 20:47 | #1 | 
| Veteran  Registriert seit: 08.02.2001 Alter: 41 
					Beiträge: 320
				 |  sql server 2008, c#, decimal-werte ??? 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();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  
				____________________________________ Nein, ich bin nicht die Signatur, ich putz hier nur. http://www.chili-it.at | 
|   |   | 
|  10.05.2009, 20:47 | #2 | 
| Veteran  Registriert seit: 08.02.2001 Alter: 41 
					Beiträge: 320
				 |   aja, die xml-datei behinhaltet folgendes: Code: <node id="1234456" timestamp="2007-10-29T12:01:33Z" user="xyz" lat="47.5637201" lon="12.1581247"/> 
				____________________________________ Nein, ich bin nicht die Signatur, ich putz hier nur. http://www.chili-it.at | 
|   |   | 
|  10.05.2009, 22:17 | #3 | 
| Veteran  Registriert seit: 08.02.2001 Alter: 41 
					Beiträge: 320
				 |   passt, habs gelöst. in der stored procedure musste ich die parameter @lat und @lon mit der precision und scale aufrüsten   @lat decimal(18,7) jetzt funktionierts! 
				____________________________________ Nein, ich bin nicht die Signatur, ich putz hier nur. http://www.chili-it.at | 
|   |   | 
|  | 
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| 
 | 
 |