Ich versuche, eine Zeile einer Datenbanktabelle zu aktualisieren und zu speichern. Ich habe eine Version dieses Codes verwendet, um ein GridView zu füllen, und es funktioniert, also gehe ich davon aus, dass es etwas mit meinem SQL-Statement zu tun hat; Ich bekomme keinen Fehler, die Tabelle wird nicht aktualisiert. Bei dem Ereignis zum Laden der Seite werden die Textfelder mit den Informationen der Zeile gefüllt, und ich habe eine globale Variable namens 'temp', die den Titel der Zeile speichert, damit ich sie im Click-Ereignis der Schaltfläche verwenden kann. Der Fehler, den ich erhalte, besagt, dass ich keinen Wert für einen meiner erforderlichen Parameter angegeben habe. Die Registerkarte Meine Locals im Debugger zeigt an, dass jede Variable einen Wert hat, obwohl die Variable, die ich zu aktualisieren versuche, nicht die neuen Daten, sondern immer noch die alten Daten ist. Ich habe mehrere Beispiele angeschaut und kann das Problem nicht finden. Danke für jede Hilfe.Aktualisieren der Zeile in der Datenbank mit vb.net
Protected Sub btnSave_Click(sender As Object, e As EventArgs)
Dim strTitle As String = txtTitle.Text
Dim strConsole As String = txtConsole.Text
Dim strYear As String= txtYear.Text
Dim strPurchase As String = calDate.SelectedDate.ToString
Using con As OleDbConnection = New OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;" + "DATA SOURCE=" + Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "App_Data", "db1.accdb"))
Dim cmd As OleDbCommand = New OleDbCommand()
cmd.CommandText = Convert.ToString("UPDATE Video_Games SET Title = @title, Console = @Console, Year_Released = @Year_Released, Purchase = @Purchase WHERE Title=" & temp)
cmd.Connection = con
cmd.Parameters.AddWithValue("@Title", strTitle)
cmd.Parameters.AddWithValue("@Console", strConsole)
cmd.Parameters.AddWithValue("@Year_Released", strYear)
cmd.Parameters.AddWithValue("@Purchase", strPurchase)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
Server.Transfer("Form.aspx", True)
End Sub
Ich habe auch versucht, die haben meine wo Aussage wie: WHERE Title='" & temp & "'")
Obwohl dies funktioniert auch nicht.
This is the details of the Error message
'Dim Zeilen = cmd.ExecuteNonQuery()' Wenn das Ergebnis ungleich Null ist, wird die DB aktualisiert. Daten gespeichert als Zeichenfolge? Schlechte Idee. – Plutonix
Der Titel wird sowohl als Bedingung als auch als Sollwert verwendet. Es gibt keinen zu aktualisierenden Datensatz, wenn Sie einen neuen Titel übergeben. – Steve
Auf meiner Seite laden Ereignis füllen ich die Textfelder mit den Zeileninformationen. Ich habe eine globale Variable hinzugefügt, die den Titel der Zeile speichert, damit ich sie für die SQL-Anweisung meiner Schaltfläche verwenden kann. Dies funktioniert und speichern Sie den Titel auf die temporäre Variable. Das Ende der SQL-Anweisung lautet jetzt "WHERE Title =" & temp ". Dies gibt mir jedoch einen Fehler, der besagt, dass ich keinen Wert für einen meiner erforderlichen Parameter angegeben habe. Die Registerkarte Meine Locals im Debugger zeigt an, dass jede Variable einen Wert hat, außer dem, den ich zu aktualisieren versuche, sind nicht die neuen Daten, sondern immer noch die alten Daten. –