2016-03-21 41 views
-1

我想從VB.net中的SQL表中刪除所有記錄。我的代碼是這樣做的:從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. 

在未在代碼中提供上述本occurss的截面,但是是MtableTA.update(SQLDataset)的調用錯誤。任何幫助將非常感激。如果有幫助,我也使用OLEDB。

+0

您可能需要使用'的ExecuteNonQuery()'而不是'Update'後因爲你不更新,但刪除。 –

+0

僅供參考MySQL不是訪問 – Plutonix

+0

不確定MySQL,但截斷表是SQL Server的更好選擇。在截斷之前銷燬任何表適配器並稍後重新創建。 – rheitzman

回答

1

您已經直接刪除了繞過TableAdapter方法的行來做到這一點。所以很有可能當您調用Update時,與TableAdapter中的數據發生更改時會發生一些衝突,並且數據庫中不再有可用的數據。
直接刪除的行使用OleDbCommand.ExecuteNonQuery你應該簡單地刷新的TableAdapter將它們與實際情況同步你的物理數據庫表

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