Laden...

Insert-Anweisung stürzt ab wegen enthaltener Zahl mit Kommastelle

Erstellt von DiaryOfDreams vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.345 Views
D
DiaryOfDreams Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren
Insert-Anweisung stürzt ab wegen enthaltener Zahl mit Kommastelle

verwendetes Datenbanksystem: MSSQL

Hallo.
Ich versuche Daten mit C# in eine MSSQL-Datenbank zu schreiben.
Leider kam bei der Insert-Anweisung immer die Meldung dass die Insert-Anweisung mehr Werte im Values-Bereich hat, als im Insert-Bereich.
Eine Recherche bei Google und einiges suchen ergaben dann dass der Fehler daran liegt dass der double-Wert mit 'nem Komma dargestellt wird, was dann ja als zwei Felder interpretiert wird.

Meine erste Idee war dann es eben mit float, statt mit double zu versuchen, aber Fehlanzeige. Dann habe ich geschaut als was der Wert nochmal genau in der DB gespeichert werden muss -> real. Das entspricht (laut einer Tabelle die Google ausgespuckt hat) bei C# dem Datentyp "Single". Aber auch dieser bringt mich nicht weiter...und jetzt habe ich wirklich keine Idee mehr.
Wer kann mir helfen?
Es kann übrigens sein dass ich die Lösung erst die nächsten Tage irgendwann testen kann, so sorry.

Danke schonmal.

MfG DoD

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

das Problem ist vermutlich dass du die Query mit einer einfachen Stringverkettung erstellst.
Wenn du einen Beistrich in der Query hast dann gibt es das Problem.
Denn die Zahlen müssen mit einem Punkt als 100ender Trenner eingefügt werden.

Um der ganzen Misere zu entgehen ist es empfehlenswert die SQLParameter zu verwenden.

Gruß
Michael

2.891 Beiträge seit 2004
vor 13 Jahren

Um der ganzen Misere zu entgehen ist es empfehlenswert die SQLParameter zu verwenden

Das ist nicht nur empfehlenswert, sondern eigentlich sogar schon ein Muss...
Guck dir unbedingt mal [Artikelserie] Parameter von SQL Befehlen an!

D
DiaryOfDreams Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren

Super.
Vielen herzlichen Dank. 👍
Das habe ich auch mal gelernt, aber so lange nicht mehr gebraucht dass ich da echt nicht mehr dran gedacht habe dass es sowas ja auch gibt. 8o
Wird direkt verwendet sobald ich dazu komme.

X
1.177 Beiträge seit 2006
vor 13 Jahren

huhu,

Das habe ich auch mal gelernt, aber so lange nicht mehr gebraucht

imho kommt das jetzt darauf an wie lange das her ist^^ Denn "damals" war das üblich und wir versuchen alles, damit sich die Programmierer auch wieder an "die richtige Art und Weise" (von damals) erinnern.

😃

xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

D
DiaryOfDreams Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren

Hallo.
Also, ich habe es heute mal eingebaut und getestet.
Leider kommt eine Fehlermeldung beim herstellen der Verbindung zur DB.

So funktioniert es:

string conString;
OdbcConnection con = new OdbcConnection();

conString = "DSN=" + DSN + ";UID=" + UID + ";PWD=" + PWD;
con.ConnectionString = conString;
con.Open();

So funktionert es jetzt NICHT:

SqlConnectionStringBuilder conBuilder = new SqlConnectionStringBuilder();
            
conBuilder.DataSource = IP + ",1433";
conBuilder.InitialCatalog = WAWI;
conBuilder.UserID = UID;
conBuilder.Password = PWD;
con = new SqlConnection(conBuilder.ConnectionString);

con.Open();

Die Fehlermeldung die kommt lautet:> Fehlermeldung:

"Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: TCP-Provider, error: 0 - Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.)"

Ic hoffe dass mir irgendwer weiterhelfen kann, da ich langam verzweifle, weil es mich gerade nervt dass es so schwer ist 'ne Verbindung zur DB mit C# herzustellen. (Gut, wahrscheinlich stelle ich mich nur blöd an, ist aber einfacher C# die Schuld zu geben. lach)

Danke.

2.891 Beiträge seit 2004
vor 13 Jahren

weil es mich gerade nervt dass es so schwer ist 'ne Verbindung zur DB mit C# herzustellen.

Ist eigentlich gar nicht so schwer. Du kennst ja sicherlich die Seite ConnectionStrings.com. Da kannst du gucken, für welche Datenbank du welche Verbindungszeichenfolge benötigst.
Da du vom SQL-Server redest, sollte schon Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword; (SQL-Server-Authentifizierung) bzw. Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=true; (Windows-Authentifizierung; wenn du und der Server in der gleichen Domäne sind) reichen.
Deine Fehlermeldung lässt darauf schließen, dass du "myServerAddress" falsch angegeben hast. Dort musst du den Instanznamen des SQL-Servers angeben. Beim vollen MS-SQL-Server ist das meist die Standardinstanz, d.h. der Rechnername sollte reichen. Beim MS-SQL-Server-Express musst du i.d.R. die benannte Instanz angeben, also z.B. "RECHNERNAME\SQLEXPRESS".

Wie die Verbindungszeichenfolge aber konkret bei dir aussehen muss, hängt von deiner Konfiguration ab (Windows- oder SQL-Server-Authentifizierung?, benannte oder Standardinstanz?).

Gruß,
dN!3L