2016-03-21 20 views
-1

Tüm kayıtları VB.net'deki bir SQL tablosundan kaldırmaya çalışıyorum. Bunu yapmak için My kodudur:VB.net'de sql tablosundaki öğeleri silme

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 ve Itables SQL tabloları vardır MtableTA ve ItableTA tablo adaptörleri ise.

Ben de

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. 

bu occurss yukarıdaki kodda sağlanmaz bölüm devletler ancak MtableTA.update (SQLDataset) için bir çağrıdır bir hata alıyorum sonunda. Herhangi bir yardım çok takdir edilecektir. Eğer yardımcı olursa OLEDB kullanıyorum.

+0

gerçek durumla senkronize etmek üzere TableAdapters yenilemeniz gerekir OleDbCommand.ExecuteNonQuery kullanarak doğrudan satırları çıkardıktan sonra
güncelleme yapmıyorsunuz, ancak siliyorsunuz. –

+0

FYI MySQL erişim değil – Plutonix

+0

MySQL hakkında emin değilim ama Truncate Tablo SQL Server için daha iyi bir seçenektir. Kesilmeden önce herhangi bir tablo bağdaştırıcısını yok edin ve daha sonra yeniden oluşturun. – rheitzman

cevap

1

Bunu yapmak için TableAdapter yöntemlerini atlayarak satırları doğrudan sildiniz. Bu nedenle, Update'i çağırdığınızda, TableAdapter üzerinde değiştirilen ve veritabanında daha fazla veri bulunmayan bazı çakışmaların olması muhtemeldir. Muhtemelen `ExecuteNonQuery()` yerine `arasında Update` kullanmak gerekir sadece fiziksel veritabanı tablosu

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