我正在开展一个项目,我将在数据库中添加记录。我的一个大问题是“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)
答案 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 Number
和Book Title
P.S。
.AddWithValue("a", b)
a =这可以是任何东西,但作为我的个人规则,我倾向于根据列名称来命名 b =您要传递的值
答案 1 :(得分:1)
尝试从
更改这些参数的名称