我正在使用 Vb.Net 用一些文本框更新我的訪問資料庫。這是我擁有的代碼,當單擊表單中的“更新”按鈕時不會出現任何錯誤,但也沒有任何反應。由于某種原因,資料庫沒有得到更新。我不確定我做錯了什么。
Dim pro As String
Dim connstring As String
Dim command As String
Dim myconnection As OleDbConnection = New OleDbConnection
pro = "Provider =Microsoft.ACE.OLEDB.12.0; data source= C:\Users\Hamza\Documents\POS system1.accdb"
connstring = pro
myconnection.ConnectionString = connstring
myconnection.Open()
Dim Str = "Update Customers SET FirstName=?, LastName=?, Address=?, PhoneNo=?, Points=? WHERE CustID=?"
Dim cmd = New OleDbCommand(Str, myconnection)
cmd.Parameters.AddWithValue("@CustID", CustIDTextBox)
cmd.Parameters.AddWithValue("@FirstName", First_NameTextBox)
cmd.Parameters.AddWithValue("@LastName", Last_NameTextBox)
cmd.Parameters.AddWithValue("@Address", AddressTextBox)
cmd.Parameters.AddWithValue("@PhoneNo", Phone_noTextBox)
cmd.Parameters.AddWithValue("@Points", PointsTextBox)
cmd.ExecuteNonQuery()
MsgBox("Updated!")
uj5u.com熱心網友回復:
您可以將連接字串直接傳遞給連接的建構式。
OleDb(與 Access 一起使用)不關心引數的名稱。它們出現在 sql 字串中的順序必須與它們添加到引數集合中的順序相匹配。因此,將 CustID 移到要添加的引數的末尾,因為它是 sql 字串中的最后一個內容。
我很高興看到您正在使用引數。該Add方法使您有更好的機會將正確的資料型別發送到資料庫。我不確定 TextBox 變數是否是需要Text您設定的屬性或變數的文本框。我不得不猜測資料型別。檢查您的資料庫以獲取實際型別。
需要處理連接和命令。Using...End Using塊為我們完成了這項作業。它還會關閉連接。你根本沒有關閉你的連接。
在執行之前不要打開連接...
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Str = "Update Customers SET FirstName=?, LastName=?, Address=?, PhoneNo=?, Points=? WHERE CustID=?"
Dim pro = "Provider =Microsoft.ACE.OLEDB.12.0; data source= C:\Users\Hamza\Documents\POS system1.accdb"
Using myconnection As New OleDbConnection(pro),
cmd As New OleDbCommand(Str, myconnection)
cmd.Parameters.Add("@FirstName", OleDbType.VarChar).Value = First_NameTextBox.Text
cmd.Parameters.Add("@LastName", OleDbType.VarChar).Value = Last_NameTextBox.Text
cmd.Parameters.Add("@Address", OleDbType.VarChar).Value = AddressTextBox.Text
cmd.Parameters.Add("@PhoneNo", OleDbType.VarChar).Value = Phone_noTextBox.Text
cmd.Parameters.Add("@Points", OleDbType.Integer).Value = CInt(PointsTextBox.Text)
cmd.Parameters.Add("@CustID", OleDbType.Integer).Value = CInt(CustIDTextBox.Text)
myconnection.Open()
cmd.ExecuteNonQuery()
End Using
MsgBox("Updated!")
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/316233.html
