2012-11-22 115 views
0

我想插入一行到表我在訪問。該表名爲Site,它有兩列,即SiteId(AutoNumber)和SiteName(Text)。出於測試目的,我一把抓起一個Excel工作表的值並試圖將值與下面的代碼的網站名稱列...VB.NET Access DB插入不插入數據?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim App As New Excel.Application 
    Dim WB As Excel.Workbook = App.Workbooks.Open("C:\MyFile.xlsx") 
    Dim WS As Excel.Worksheet = DirectCast(WB.Worksheets(2), Excel.Worksheet) 
    App.Visible = False 

    Dim Range As Excel.Range 
    Range = WS.Range("A8") 
    Dim cnn As New OleDbConnection(My.Settings.cnn) 
    Dim cmd As New OleDbCommand("INSERT INTO Site(SiteName) VALUES(@SiteName)", cnn) 
    cmd.Parameters.Add("@SiteName", OleDbType.Char).Value = Range.Value.ToString 

    Try 
     Using cmd.Connection 
      cmd.Connection.Open() 
      cmd.ExecuteNonQuery() 
     End Using 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 

即使我刪除cmd.Parameters線,只是把直值(如'測試')它不會插入。執行命令時,代碼中沒有錯誤。爲什麼價值不起作用?我已經驗證了從Excel工作表返回的數據,並且工作正常。我只是無法將它插入到Access中的表中。該連接工作正常,以及因爲如果我用這個插入...

Dim cmd As New OleDbCommand("INSERT INTO Site VALUES(@SiteName)", cnn) 

它會告訴我該查詢值的數量不匹配字段計數或類似的東西。

回答

2

值插入(至少大部分的時間);)你有沒有檢查過的mdb的內容(輸出文件夾)手動!?

您已經添加了mdb文件到您的項目?轉到文件的屬性窗口並將「複製到輸出目錄」設置爲「從不」。

通常,當您添加的文件,它被設置爲「複製,如果新」或「總是複製」。這意味着,只要您運行你的應用程序在調試器從項目目錄的MBD文件複製到調試/ release文件夾中,並覆蓋在已內(並在您已存儲在您的記錄)的任何文件。

+1

胡說!這是工作。我沒有意識到它正在複製到可執行文件的調試文件夾中。我正在使用源文件夾中的文件...謝謝! –