Access 数据库未通过 Vb.net 中的文本框更新
Access database not updating through the Textboxes in Vb.net
我正在使用 Vb.Net 使用一些文本框更新我的访问数据库。这是我的代码,当在表单中单击 'update' 按钮时不会出现任何错误,但也没有任何反应。由于某种原因,数据库没有得到更新。我不确定我做错了什么。
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!")
您可以将连接字符串直接传递给连接的构造函数。
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
我正在使用 Vb.Net 使用一些文本框更新我的访问数据库。这是我的代码,当在表单中单击 'update' 按钮时不会出现任何错误,但也没有任何反应。由于某种原因,数据库没有得到更新。我不确定我做错了什么。
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!")
您可以将连接字符串直接传递给连接的构造函数。
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