此代码不会引发错误,但是不起作用。
任何帮助将不胜感激!
我是一位迁移到.Net的VB6程序员
我正在使用的其他代码正在添加和删除记录,而不是对其进行更新...
Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim cmdUpdate As New OleDbCommand
provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
myConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Chr(34) & sAppData & "\Data.mdb" & Chr(34) & _
";Persist Security Info=True;Jet OLEDB:Database Password=1"
myConnection.Open()
Dim str As String
str = "update Data set ([1], [2], [3], [4]) values (?, ?, ?,?)"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
cmd.Parameters.Add(New OleDbParameter("1", CType(TextBox2.Text, String)))
cmd.Parameters.Add(New OleDbParameter("2", CType(txtDesc.Text, String)))
cmd.Parameters.Add(New OleDbParameter("3", CType(TextBox3.Text, String)))
Dim cbState As String = ""
If CheckBox1.Checked = True Then
cbState = "1"
Else
cbState = "0"
End If
cmd.Parameters.Add(New OleDbParameter("4", CType(cbState, String)))
Try
cmd.ExecuteNonQuery()
cmd.Dispose()
myConnection.Close()
Me.Close()
Exit Sub
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
答案 0 :(得分:1)
有可能通过您的Me.Close()
在try-catch块中,在干净地释放所有资源之前,该表单已关闭。
我将执行以下操作:
cmd.ExecuteNonQuery()
返回更新的行数。检查该值是否大于0。Me.Close()
最后,我将替换如下代码:
cmd.Parameters.Add(New OleDbParameter("1", CType(TextBox2.Text, String)))
更方便
cmd.Parameters.AddWithValue("1", TextBox2.Text)
当传递日期和时间等可本地化的内容时,AddWithValue()函数特别有用。