so habe ich die Update-Anweisung funktioniert und der Datensatz in der Datenbank wird aktualisiert. Das Programm gibt jedoch einen Fehler aus, nachdem der Datensatz aktualisiert wurde.Aktualisieren von VB.Net-Datenbank mit SQL-Update-Anweisung
Fehler
Eine nicht behandelte Ausnahme des Typs ‚System.Data.OleDb.OleDbException‘ aufgetreten in System.Data.dll
Zusätzliche Informationen: Die Änderungen, die Sie an den Tisch gebeten, waren nicht erfolgreich, weil Sie würden doppelte Werte im Index, Primärschlüssel oder in der Beziehung erzeugen. Ändern Sie die Daten in dem Feld oder den Feldern, die doppelte Daten enthalten, entfernen Sie den Index, oder definieren Sie den Index neu, um doppelte Einträge zuzulassen, und versuchen Sie es erneut.
-Code
Dim variable As String
dsConnectionM.Open()
variable = "UPDATE Member SET MemberID = '" & Form3.tbid.Text & "', Forename = '" & Form3.tbfn.Text & "' "
Dim cmd As OleDbCommand = New OleDbCommand(variable, dsConnectionM)
cmd.ExecuteNonQuery()
dsConnectionM.Close()
I don't know if this is normal but when ran a second Access file for the database is created
This shows the contents of "Member" in the databse
EDITED
Ich begann Parameter verwenden, wie ich ich einen anderen Fehler bekommen jetzt beraten.
ERROR
Eine nicht behandelte Ausnahme des Typs 'System.Data.OleDb.OleDbException' aufgetreten in System.Data.dll
Zusätzliche Informationen: Syntaxfehler in der Anweisung UPDATE.
CODE
Dim variable As String
dsConnectionM.Open()
variable = "UPDATE Member
SET Forename = @Forename,
Surname = @Surname,
DOB = @DOB,
Section = @Section,
Postcode = @Postcode,
HomeTel = @HomeTel,
MobileTel = @MobileTel,
AddressLine1 = @AddressLine1,
AddressLine2 = @AddressLine2,
City = @City,
EmailAddress = @EmailAddress,
P/GForename = @P/GForename,
P/GSurname = @P/GSurname
WHERE MemberID = @MemberID"
Dim cmd As OleDbCommand = New OleDbCommand(variable, dsConnectionM)
cmd.Parameters.AddWithValue("@MemberID", Form3.tbid.Text)
cmd.Parameters.AddWithValue("@Forename", Form3.tbfn.Text)
cmd.Parameters.AddWithValue("@Surname", Form3.tbsn.Text)
cmd.Parameters.AddWithValue("@DOB", Form3.dtpdob.Value)
cmd.Parameters.AddWithValue("@Section", Form3.tbsr.Text)
cmd.Parameters.AddWithValue("@Postcode", Form3.tbpc.Text)
cmd.Parameters.AddWithValue("@HomeTel", Form3.tbht.Text)
cmd.Parameters.AddWithValue("@MobileTel", Form3.tbmt.Text)
cmd.Parameters.AddWithValue("@AddressLine1", Form3.tbal1.Text)
cmd.Parameters.AddWithValue("@AddressLine2", Form3.tbal2.Text)
cmd.Parameters.AddWithValue("@City", Form3.tbc.Text)
cmd.Parameters.AddWithValue("@EmailAddress", Form3.tbea.Text)
cmd.Parameters.AddWithValue("@P/GForename", Form3.tbpgfn.Text)
cmd.Parameters.AddWithValue("@P/GSurname", Form3.tbpgsn.Text)
cmd.ExecuteNonQuery()
dsConnectionM.Close()
aussehen Die Fehlermeldung klar ist, dass Sie MemberID auf einen Wert bereits in der DB so bewirkt, dass ein Primärschlüssel/Einzigartige Constrain Verletzung zu setzen versuchen. –
Beide Anweisungen (es aktualisiert und löst eine Ausnahme aus) können nicht wahr sein, es sei denn, Sie haben Code, der dieses isolierte Snippet zweimal aufruft. Auch das war nicht die richtige Art, SQL schon lange zu erstellen. Verwenden Sie SQL-Parameter. Bitte lesen Sie [fragen] und nehmen Sie die [Tour] – Plutonix
Sie fragen wahrscheinlich die falsche Frage [** Was ist das XY-Problem? **] (http://meta.stackexchange.com/questions/66377/what-is- Das-xy-Problem) –