我一直在閱讀一些hep論壇和一些幫助書籍,但似乎無法讓我的頭纏到此。我的任務是從兩個文本文件中讀取數據,然後將該數據加載到現有的MS Access 2007數據庫中。所以這裏是我想要做的:VB.NET更新訪問數據庫與數據表
- 從第一個文本文件和每一行數據讀取數據使用CarID作爲我的唯一字段將數據添加到DataTable。
- 從第二個文本文件讀取數據,並在DataTable中查找現有CarID,如果存在更新該行。如果它不存在,請添加一個新行。
- 一旦完成將DataTable的內容推送到數據庫。
我有什麼至今:
Dim sSQL As String = "SELECT * FROM tblCars"
Dim da As New OleDb.OleDbDataAdapter(sSQL, conn)
Dim ds As New DataSet
da.Fill(ds, "CarData")
Dim cb As New OleDb.OleDbCommandBuilder(da)
'loop read a line of text and parse it out. gets dd, dc, and carId
'create a new empty row
Dim dsNewRow As DataRow = ds.Tables("CarData").NewRow()
'update the new row with fresh data
dsNewRow.Item("DriveDate") = dd
dsNewRow.Item("DCode") = dc
dsNewRow.Item("CarNum") = carID
'about 15 more fields
'add the filled row to the DataSet table
ds.Tables("CarData").Rows.Add(dsNewRow)
'end loop
'update the database with the new rows
da.Update(ds, "CarData")
問題:
在構建我的表,我使用 「SELECT * FROM tblCars」,但如果該表具有數百萬條記錄已經什麼。這不是浪費資源嗎?如果我想更新新記錄,我應該嘗試一些不同的東西嗎?
一旦我完成了第一個文本文件,然後我去我的下一個文本文件。這裏最好的方法是什麼:首先查找基於CarNum的現有記錄或創建第二個表格,然後將兩者合併到一起?
最後,當DataTable完成填充和im推到數據庫我想確保如果記錄已經存在三個主要字段(DriveDate,DCode和CarNum),他們得到更新與新字段,如果它不存在,那麼這些記錄會被追加。我的過程可能嗎?
TIA AGP
除非我遺漏了一些東西,否則我不會使用中間數據表,而是直接從文本文件數據中插入或更新MS-Access數據庫。首先測試以確定密鑰是否存在,並相應地插入或更新。 – 2013-07-10 23:31:00