VB.NET访问数据库插入不插入数据?

我试图插入一个表,我在Access中的表。 该表名为Site,它有两列,SiteId(AutoNumber)和SiteName(Text)。 出于testing的目的,我从Excel工作表中抓取了一个值,并尝试用下面的代码将值插入到SiteName列中。

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行,只是把一个像Values('Test')这样的直接值,它不会插入。 执行命令时,代码中没有出错。 为什么价值不工作? 我已经validation从Excel工作表返回的数据,工作正常。 我只是不能让它插入Access中的表。 连接工作正常,因为如果我使用此插入…

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

它会告诉我,查询值的数量不匹配字段计数或sorting的东西。

插入的值(至less大部分时间);)你有没有手动检查mdb的内容(在输出文件夹!)?

你已经添加了mdb文件到你的项目中? 转到文件的属性窗口,将“复制到输出目录”设置为“从不”。

通常,当您添加文件时,它被设置为“如果更新的复制”或“始终复制”。 这意味着无论何时在debugging器中运行应用程序,项目目录中的mbd文件都将被复制到debugging/发布文件夹,并覆盖已经存在的任何文件(以及存储logging的位置)。