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 ?(
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);
}
Ich versteh nicht ganz was die '+'-Zeichen da verloren haben...
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!
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.
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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
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 🤔 🤔
@bredator:
Schau dir dringend noch mal den Artikel [Artikelserie] SQL: Parameter von Befehlen durch. Du scheinst nicht verstanden zu haben worum es da geht.
@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.