Vb.net SelectCommand属性在调用';填充&x27;问题
在调用“填充”问题之前,SelectCommand属性尚未初始化:Vb.net SelectCommand属性在调用';填充&x27;问题,vb.net,ms-access,Vb.net,Ms Access,在调用“填充”问题之前,SelectCommand属性尚未初始化: Private Sub DeleteButton_Click(sender As Object, e As EventArgs) Handles DeleteButton.Click Dim tables As DataTableCollection Dim source1 As New BindingSource Dim row As New Integer Try ds = N
Private Sub DeleteButton_Click(sender As Object, e As EventArgs) Handles DeleteButton.Click
Dim tables As DataTableCollection
Dim source1 As New BindingSource
Dim row As New Integer
Try
ds = New DataSet
tables = (ds.Tables)
da = New OleDbDataAdapter
da.Fill(ds, "Booking")
Dim cmdstr As String = "delete * from [Booking] where ID = " & DataGridView1.SelectedRows(0).Cells(0).Value.ToString()
Dim cmd As New OleDbCommand(cmdstr, objCon)
da.SelectCommand = cmd
objCon.Open()
cmd.ExecuteNonQuery()
objCon.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
改变
da.SelectCommand = cmd
与
da.DeleteCommand = cmd
在代码开头调整
Dim
语句;您在代码中从不使用表、source1或row,所以声明它们是没有意义的
在Try
上,您将新数据集
分配给ds。这是空的,因此将表集合分配给表没有意义。这也将是空的
接下来创建一个新数据适配器
。新的DataAdapter没有select命令,因此它将无法填充任何内容
然后将删除命令分配给DataAdapter的SelectCommand属性。这毫无意义
最后执行命令。如果没有其他代码,这应该可以工作
使数据库对象保持本地状态,以便可以控制它们的关闭和处理<代码>使用…结束使用为您解决此问题。Using还充当Dim语句,因此它还声明变量。通过用逗号分隔多个变量,可以使用一个USE包含多个变量
我猜是youid字段的数据类型。检查你的数据库
Private Sub DeleteButton_Click(sender As Object, e As EventArgs) Handles DeleteButton.Click
Try
Using cn As New OleDbConnection("Your connection string"),
cmd As New OleDbCommand("delete * from [Booking] where ID = @ID", cn)
cmd.Parameters.Add("@ID", OleDbType.Integer).Value = DataGridView1.SelectedRows(0).Cells(0).Value
cn.Open()
cmd.ExecuteNonQuery()
End Using
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
不要对非查询使用
SelectCommand
。