从VB.net中的sql表中删除项目

时间:2016-03-21 18:23:57

标签: 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()
        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。

1 个答案:

答案 0 :(得分:1)

您已经绕过TableAdapter方法直接删除了这些行。因此,当您调用Update时,很可能与TableAdapter上的数据发生了一些冲突,并且数据库中没有更多数据。 使用OleDbCommand.ExecuteNonQuery直接删除行后,您应该只需刷新TableAdapter以将它们与物理数据库表中的实际情况同步

SQLDataset.Tables("ITable").Clear()
ITableTA.Adapter.Fill(SQLDataSet.ITable)