我正在使用WPF应用程序将学生插入我的MS Access数据库。
我想在此代码中使用参数:
Dim sql As String = _
"INSERT INTO exams " & _
"VALUES (@student)"
Dim opdracht As OleDbCommand = New OleDbCommand(sql, connectie)
opdracht.Parameters.Add(New OleDbParameter("@student", 5))
但这不起作用。
我得到它的唯一方法就是这个:
Dim sql As String = _
"INSERT INTO exams " & _
"VALUES (" & student & ")"
' opdracht initialiseren
Dim opdracht As OleDbCommand = New OleDbCommand(sql, connectie)
要使用此查询,我使用命令,这是我收到错误的地方。
opdracht.executeNonQuerry()
MS Access中的表格布局如下所示:
我的应用程序核心地插入了其他值,但我把它们留下来保留一个最小的例子。
答案 0 :(得分:1)
如果您有一个名为student
的变量,并且您想将其值用于参数,那么您需要将该变量指定为参数的值
Dim sql As String = "INSERT INTO exams VALUES (@student)"
Dim opdracht As OleDbCommand = New OleDbCommand(sql, connectie)
opdracht.Parameters.AddWithValue("@student", student)
opdracht.ExecuteNonQuery()
当然,我假设这是因为您说字符串连接版本正在运行,并且在该示例中,您在命令文本中连接名为student
的变量的值
请记住,对于OleDb,参数的名称没有意义,因为OleDb使用占位符的位置来传递参数的值,而不是参数名称
编辑只有在添加所有字段的参数时,才使用INSERT INTO而不指定列名。您的数据库表包含其他字段,因此您需要指定它们或使用INSERT INTO的不同语法
Dim sql As String = "INSERT INTO exams (Student) VALUES (@student)"
但是这也会失败,因为你的主键有Student字段。属于主键的字段不能为空,因此您别无选择,只能添加主键所需的所有值
Dim sql As String = "INSERT INTO exams (Student, locaal, opleidingsOnderdeel) " & _
"VALUES (@student, @local, @oplei)"
.. add the parameter's value for student, local and oplei
但是,字符串连接有效,我感到有点困惑。变量学生的价值是多少?您应该获得与仅使用一个参数的参数化查询相同的错误。