WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 10.05.2009, 19:47   #1
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard 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();
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
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 10.05.2009, 19:47   #2
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

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
Hussl ist offline   Mit Zitat antworten
Alt 10.05.2009, 21:17   #3
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

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
Hussl ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:17 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag