OleDB INSERT STATEMENT错误

时间:2013-12-21 15:51:32

标签: vb.net ms-access-2007

我正在开展一个项目,我将在数据库中添加记录。我的一个大问题是“INSERT INTO”语句,在搜索和调试之后仍然没有成功。这是代码的一部分:

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click


    Dim sqlinsert As String = "INSERT INTO tblList([Access Number],[Book Title],Subject,Author,Edition,Page,Publisher,Years,Copy)" & "VALUES(@Access Number,@Book Title,@Subject,@Author,@Edition,@Page,@Publisher,@Years,@Copy)"

    Dim cmd As New OleDbCommand(sqlinsert, con)

    cmd.Parameters.Add(New OleDbParameter("@Access Number", txtan.Text))
    cmd.Parameters.Add(New OleDbParameter("@Book Title", txtbt.Text))
    cmd.Parameters.Add(New OleDbParameter("@Subject", txtsub.Text))
    cmd.Parameters.Add(New OleDbParameter("@Author", txtau.Text))
    cmd.Parameters.Add(New OleDbParameter("@Edition", txted.Text))
    cmd.Parameters.Add(New OleDbParameter("@Page", txtpg.Text))
    cmd.Parameters.Add(New OleDbParameter("@Publisher", txtpub.Text))
    cmd.Parameters.Add(New OleDbParameter("@Years", txtyr.Text))
    cmd.Parameters.Add(New OleDbParameter("@Copy", txtco.Text))



    cmd.ExecuteNonQuery()

    MsgBox("One Record Added")

    Refreshlist()
    clear()

End Sub

请帮帮我?我感到很困惑。 非常感谢。 (我在Visual Studio 2008中使用ms access和vb.net)

2 个答案:

答案 0 :(得分:1)

在挖掘我的一些旧程序后,这就是我将参数传递给ms访问的方式:

Dim sqlinsert As String= "INSERT INTO tblList([Access Number],[Book Title],Subject,Author,Edition,Page,Publisher,Years,Copy)" & _
                         "VALUES(?,?,?,?,?,?,?,?,?)"  
        Dim cmd as new OleDbCommand(sqlinsert, con)
        cmd.Connection.Open
        With cmd.Parameters
           .AddWithValue("access_number", txtan.text)
           .AddWithValue("book_title", txtbt.text)
           .AddWithValue("subject", txtsub.text)
           .AddWithValue("author", txtau.text)
           .AddWithValue("edition", txted.text)
           .AddWithValue("page", txtpg.text)
           .AddWithValue("publisher", txtpub.text)
           .AddWithValue("years", txtyr.text)
           .AddWithValue("copy", txtco.text)
        End With
        cmd.ExecuteNonQuery()

另外,我要警惕在列名上使用spaces
 特别是Access NumberBook Title

P.S。

.AddWithValue("a", b)

a =这可以是任何东西,但作为我的个人规则,我倾向于根据列名称来命名 b =您要传递的值

答案 1 :(得分:1)

尝试从

更改这些参数的名称
  • “@ Access Number”:“@ Access_Number”
  • “@ Book Title”:“@ Book_Title”