Mysql 在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()

我正在尝试从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和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是一个更好的选项。在截断之前销毁所有表适配器,然后重新创建。