Laden...

[erledigt] Was ist falsch am datenbankeintrag SQLQuery

Erstellt von carsten.henek vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.394 Views
C
carsten.henek Themenstarter:in
13 Beiträge seit 2012
vor 11 Jahren
[erledigt] Was ist falsch am datenbankeintrag SQLQuery

Servus Leute ....
Ich hab ein Problem. Unzwar klappt der Datenbankeintrag wenn ich den sqlstring direkt ausführe aber ich möchte ihn über AddWithValue ausführen.......Wo ist mein Fehler) 😭

 try
            {
                SqlCommand sqlWrite = new SqlCommand("INSERT INTO Fehlerdokumentation (Barcode, ID_Fehlerbeschreibung, Bereich_X, Bereich_Y, Datum) VALUES ( + @barcode + , + @ID_Fehlerbeschreibung +, + @Bereich_X +, + @Bereich_Y + )", con);
                sqlWrite.Parameters.AddWithValue("@barcode", barcode);
                sqlWrite.Parameters.AddWithValue("@ID_Fehlerbeschreibung", ID_Fehlerbeschreibung);
                sqlWrite.Parameters.AddWithValue("@Bereich_X", Bereich_X);
                sqlWrite.Parameters.AddWithValue("@Bereich_Y", Bereich_Y);
                sqlWrite.ExecuteNonQuery();
            }
            catch
            {
                MessageBox.Show("Fehler beim schreiben in die Datenbank");
            }

Bitte um schnelle hilfe ?(

B
357 Beiträge seit 2010
vor 11 Jahren

Eventuell liegt es an den Datentypen.

VALUES ( + @barcode + , + @ID_Fehlerbeschreibung +, + @Bereich_X +, + @Bereich_Y + )

Je nachdem, welche Datentypen in der Datenbank verlangt werden, kann es sein, dass Anführungszeichen vor den Parametern erwartet werden. Das sollte dir aber eigentlich dein DBMS zurückgeben, woran es liegt.

Mach mal:

catch (Exception ex)
{
 MessageBox.Show(ex.Message);
}
S
417 Beiträge seit 2008
vor 11 Jahren

Ich versteh nicht ganz was die '+'-Zeichen da verloren haben...

C
carsten.henek Themenstarter:in
13 Beiträge seit 2012
vor 11 Jahren

Bei der exception:

  catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

sagt er mir: incorect syntax near ',' .

sehr aussagekräftig 🤔

das mit den add with values hat an einer anderen stelle im prog, wo ich aus der datenbank gelesen habe geklappt!

An dieser stelle:

SqlCommand sqlBaureihe = new SqlCommand("SELECT Baureihe.Name FROM Barcode, Baureihe WHERE Barcode.Barcode=@barcode AND Baureihe.ID=Barcode.ID_Baureihe", con);
                sqlBaureihe.Parameters.AddWithValue("@barcode", barcode);
                SqlDataReader sqlReader = sqlBaureihe.ExecuteReader();

deshalb versteh ich nicht wo der fehler ist....

die datentypen stimmen auch überein 😭

danke für die schnelle antwort!

S
269 Beiträge seit 2010
vor 11 Jahren

Ich kann mich hier auch nur der Aussage von Sarc anschließen:
Ich verstehe ebenfalls nicht, was die "+" dort eigentlich verloren haben sollen.
Wenn es dafür eine vernünftige Erklärung gibt, so bitte ich hier um diese, ansonsten würde ich einfach mal sagen, dass dort dein Fehler liegt.

16.835 Beiträge seit 2008
vor 11 Jahren

Das sieht so aus, als ob Du früher mittels den + Zeichen einen SQL String zusammen gebaut hast, statt auf die Parameterlösung zu setzen.
Beim Umbauen auf die Parameter, hast Du die + fälschlicherweise nicht entfernt; die müssen da weg.

Beachte in Zukunft [Hinweis] Wie poste ich richtig? Punkt 5 - es schadet nicht, nochmals alles durch zu lesen.

T
156 Beiträge seit 2012
vor 11 Jahren

Hallo carsten.henek

Dein SQL

            SqlCommand sqlWrite = new SqlCommand("INSERT INTO Fehlerdokumentation (Barcode, ID_Fehlerbeschreibung, Bereich_X, Bereich_Y, Datum) VALUES ( + @barcode + , + @ID_Fehlerbeschreibung +, + @Bereich_X +, + @Bereich_Y + )", con);

liest sich beinahe als würdest du eine String-Verkettung mit den +-Zeichen vornehmen wollen. Da sich aber alles innerhalb des String befindet denke ich das dieses Statement vom DBMS so nicht unterstützt wird.

Gruß, Karl

C
carsten.henek Themenstarter:in
13 Beiträge seit 2012
vor 11 Jahren

Danke liebe community ......mein Problem hat sich gelöst 👅

hab das ++ weggelassen und hab ganz vergessen den Teil mit dem Datum in Values zu übernehmen mit GETDATE() 👅

ich liebe programmieren aber eine problemlösung zu finden macht riesen frust 🤔 🤔

F
10.010 Beiträge seit 2004
vor 11 Jahren

@bredator:
Schau dir dringend noch mal den Artikel [Artikelserie] SQL: Parameter von Befehlen durch. Du scheinst nicht verstanden zu haben worum es da geht.

B
357 Beiträge seit 2010
vor 11 Jahren

@FZelle
Verstanden schon, nur zu selten genutzt. 😉 Trotzdem danke für den Hinweis, ich muss mich damit dringend mal beschäftigen, da es einem das Leben doch sehr erleichtert.