Mysql 在VB.net中从sql表中删除项
我正在尝试从VB.net中的SQL表中删除所有记录。我的代码是:Mysql 在VB.net中从sql表中删除项,mysql,vb.net,Mysql,Vb.net,我正在尝试从VB.net中的SQL表中删除所有记录。我的代码是: Dim SQL As String = "DELETE FROM MTable" Using CN As New OleDb.OleDbConnection(AddPage.DBConnect) CN.Open() Dim DBcmd As New OleDb.OleDbCommand(SQL, CN) DBcmd.ExecuteNonQuery()
Dim SQL As String = "DELETE FROM MTable"
Using CN As New OleDb.OleDbConnection(AddPage.DBConnect)
CN.Open()
Dim DBcmd As New OleDb.OleDbCommand(SQL, CN)
DBcmd.ExecuteNonQuery()
CN.Close()
End Using
'SQLDataset.Tables("Mtable").Clear()
MtableTA.Update(SQLDataset)
SQL = "DELETE FROM ITable"
Using CN As New OleDb.OleDbConnection(AddPage.DBConnect)
CN.Open()
Dim DBcmd As New OleDb.OleDbCommand(SQL, CN)
DBcmd.ExecuteNonQuery()
CN.Close()
End Using
' SQLDataset.Tables("ITable").Clear()
ITableTA.Update(SQLDataset)
Mtable和ITABLE是SQL表,而MtableTA和ItableTA是表适配器
我最后也得到了一个错误
An unhandled exception of type 'System.Data.DBConcurrencyException' occurred in System.Data.dll
Additional information: Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.
上面的代码中没有提供发生这种情况的部分,而是对MtableTA.update(SQLDataset)的调用。任何帮助都将不胜感激。如果有帮助的话,我也在使用OLEDB。您已经绕过TableAdapter方法直接删除了行。因此,调用更新时,很可能与TableAdapter上更改的数据发生冲突,而数据库中没有可用的数据。
使用OleDbCommand.ExecuteOnQuery直接删除行后,您只需刷新TableAdapter,使其与物理数据库表上的实际情况同步
SQLDataset.Tables("ITable").Clear()
ITableTA.Adapter.Fill(SQLDataSet.ITable)
您可能需要使用
ExecuteNonQuery()
而不是Update
,因为您不是在更新,而是在删除。FYI MySQL不确定MySQL,但对于SQL Server来说,Truncate Table是一个更好的选项。在截断之前销毁所有表适配器,然后重新创建。