所以我得到的更新聲明工作和數據庫中的記錄正在更新。然而,程序在記錄更新後會拋出一個錯誤。更新VB.Net數據庫與SQL更新聲明
錯誤
類型「System.Data.OleDb.OleDbException」未處理的異常出現在system.data.dll
附加信息:您請求表的更改沒有成功,因爲他們會在索引,主鍵或關係中創建重複值。更改包含重複數據的字段或字段中的數據,刪除索引或重新定義索引以允許重複條目,然後重試。
代碼
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
我開始使用的參數,因爲我是現在勸我得到另一個錯誤。
錯誤
類型 'System.Data.OleDb.OleDbException' 未處理的異常出現在system.data.dll
其他信息:語法錯誤在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()
該錯誤信息是明確的,你正試圖MEMBERID在DB已經設置爲一個值,將導致主鍵/唯一約束衝突。 –
這兩個語句(它更新並引發異常)不能爲真,除非您有代碼調用該隔離片段兩次。此外,這還不是長時間創建SQL的正確方法;使用SQL參數。請閱讀[問]並參加[導遊] – Plutonix
您可能提出錯誤的問題[**什麼是XY問題?**](http://meta.stackexchange.com/questions/66377/what-is- the-xy-problem) –