(我應該說,即時通訊相當新的vb.net)SqlDataAdapter.Update不更新
我有覆蓋我的數據庫中條目的問題。我認爲問題在於SqlDataAdapter.Update沒有用我創建的新數據表信息正確覆蓋數據庫。
據我瞭解,它應該完全用數據表替換數據庫中的信息,當我告訴它更新...不是?
這裏的果殼中的問題:與表
基本上,我有一個數據庫(.mdf文件),它被稱爲「測試」。我用SqlDataAdapter來創建一個使用'test'的數據集。我從csv中解析出另一個數據表 - 它被稱爲「ToLoad」。我現在要清除「測試」數據表,從csv數據表複製所有條目,然後將其保存到數據庫。
我調試了所有這一切,似乎一切工作正常,除了當我使用SqlDataAdapter.Update我得到一個錯誤告訴我,我不能重複的主鍵。這是因爲在從數據表中輸入新條目之前,舊條目並未完全從數據庫中清除。
我已經檢查過,測試數據表在代碼中實際上已經被清除了......並且它是。 我檢查過,新的csv條目正在被複制到'測試'數據表...他們是。
任何幫助,您可以在此給將真的讚賞
感謝 克雷格
'MAKE A NEW SQL CONNECTION
Dim DBConnection As New SqlConnection
'SET THE CONNECTION STRING.
DBConnection.ConnectionString = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Project\Members.mdf;Integrated Security=True"
'OPEN THE CONNECTION TO THE DATABASE
DBConnection.Open()
'OPEN AN ADAPTER AND SELECT EVERYTHING FROM THE 'TEST' TABLE
Dim mySqlDataAdapter As New SqlDataAdapter("SELECT * FROM Test", DBConnection)
Dim mySqlCommandBuilder As New SqlCommandBuilder(mySqlDataAdapter)
Dim DBDataset As DataSet = New DataSet
'FILL THE DATASET WITH THE TEST TABLE
mySqlDataAdapter.Fill(DBDataset, "Test")
'CLEAR ALL ENTRIES IN THE DATATABLE (SO I CAN FILL IT FROM SCRATCH)
DBDataset.Tables("test").Clear()
''SET UP A LOOP TO ADD EACH RECORD FROM THE CSV DATATABLE TO THE DATABASE DATATABLE
Dim CSV_row_number As Int16
CSV_row_number = ds.Tables("toload").Rows.Count
Dim i As Int16
i = 0
Do Until i = CSV_row_number - 1
'MAKES TWO NEW DATAROW OBJECTS
Dim DB_row As DataRow
Dim CSV_row As DataRow
'SET THE CSV_ROW OBJECT EQUAL TO ROW(i) OF THE CSV DATATABLE
CSV_row = ds.Tables("toload").Rows(i)
DB_row = DBDataset.Tables("test").NewRow()
'THIS SETS ALL OF THE COLUMNS IN THIS NEW ROW AS EQUAL TO ROW1 IN THE CSV DATATABLE
DB_row("Name") = CSV_row("Name")
DB_row("Quality") = CSV_row("Address")
DBDataset.Tables("test").Rows.Add(DB_row)
i = i + 1
Loop
mySqlDataAdapter.Update(DBDataset.Tables("Test"))