2011-06-01 51 views
3

我想將一些舊的VB6代碼轉換成VB.NET。舊代碼使用DAO,現在我試圖在ADO.NET/OleDB中複製它。我已經取得了一些進展(我認爲...),但現在我無法弄清楚如何將DataTable對象添加到數據庫中。VB.NET從DataTable對象追加到數據庫表

這裏是舊VB6代碼,TD是從DAO TableDef對象:

If fso.FileExists(loc) Then 
    Set td = m_db.CreateTableDef("Ratings") 
    td.Connect = "Excel 8.0;HDR=Yes;IMEX=2;DATABASE=" & loc 
    td.SourceTableName = "Sheet1$" 
    m_db.TableDefs.Append td 
    bFileNotExists = False 
Else 
    bFileNotExists = True 
End If 

據我瞭解,這是從Excel文件「祿」閱讀工作表Sheet1,然後追加它m_db,一個DAO數據庫對象。這是我到目前爲止,並請糾正我,如果你看到任何錯誤,因爲我剛開始使用這樣的事情 -

If fso.FileExists(loc) Then 
     oleCon = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & loc & ";Extended Properties=""Excel 8.0;HDR=Yes;") 
     oleCon.Open() 
     oleAdapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$]", oleCon) 
     oleAdapter.Fill(dt) 

     bFileNotExists = False 
    Else 
     bFileNotExists = True 
    End If 

所以代替的TableDef,我正在從數據將其放入DataTable對象(dt)中。我希望迄今爲止這是正確的。現在我的問題是如何複製上面的m_db.TableDefs.Append td行。謝謝!

回答

0

問題是,您必須預先在Excel文件中加載'dt'配置,以便TableAdapter解決問題。據我所知,這是。您可以採用許多路徑,包括首先創建列,然後逐行加載,或者將Excel表加載爲DataTable本身並將其添加到DataSet中。

建議:使用

  • 開始駝峯編程符號。這確實有助於避免錯誤。
  • 閱讀ADO.NET,例如通過以下一些教程。
  • 刪除OleDb處理,ADO.NET就夠用了。
  • 實現VB.Net與VB6的區別,並準備學習更多面向對象的編程