我正在尝试编写一个程序,我可以将数据写入Access数据库,但我一直收到错误“INSERT INTO语句中的语法错误”。
FirstLast
是表的名称; First
和Last
是其中的列。
Imports System.Data.OleDb
Public Class Form1
Dim theConnectionString As New OleDbConnection
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
theConnectionString.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\user\Documents\Database1.accdb"
Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO FirstLast (First, Last) VALUES (@First, TextBox1.text)", theConnectionString)
cmd.Parameters.Add("@First", OleDbType.Char, 255).Value = TextBox1.Text
cmd.Parameters.Add("@Last", OleDbType.Char, 255).Value = TextBox1.Text
Try
theConnectionString.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw ex
Finally
theConnectionString.Close()
End Try
End Sub
End Class
答案 0 :(得分:5)
我怀疑你只需要使用命名参数而不是位置参数:
INSERT INTO FirstLast (First, Last) VALUES (@First, @Last)
请注意,您还应该对连接和命令使用Using
语句,以便自动清理,而无需显式Finally
块。 (你可以摆脱整个Try
/ Catch
/ Finally
,因为你只是在重新抛出异常。)
如下面的评论中所述,您可能还希望TextBox2.Text
用于@Last
参数,而不是再次使用TextBox1.Text
。