我试图从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()
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和Itables是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。
答案 0 :(得分:1)
您已经绕过TableAdapter方法直接删除了这些行。因此,当您调用Update时,很可能与TableAdapter上的数据发生了一些冲突,并且数据库中没有更多数据。 使用OleDbCommand.ExecuteNonQuery直接删除行后,您应该只需刷新TableAdapter以将它们与物理数据库表中的实际情况同步
SQLDataset.Tables("ITable").Clear()
ITableTA.Adapter.Fill(SQLDataSet.ITable)