VB.NET Access DB INSERT不插入数据?

时间:2012-11-22 15:03:12

标签: vb.net excel ms-access insert

我正在尝试在Access中的表中插入一行。该表名为Site,它有两列,SiteId(AutoNumber)和SiteName(Text)。出于测试目的,我从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行并只是放置一个像值('Test')这样的直值,它也不会插入。我执行命令时代码中没有错误。为什么价值不起作用?我已经验证了从Excel工作表返回的数据,并且工作正常。我只是无法将其插入Access中的表中。连接工作正常,因为如果我使用此插入...

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

它会告诉我查询值的数量与字段数或类似的东西不匹配。

1 个答案:

答案 0 :(得分:2)

插入值(至少大部分时间);)您是否曾手动检查过mdb的内容(在输出文件夹中!)?

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

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