无法将字符串插入Access数据库

时间:2014-05-16 15:22:00

标签: vb.net ms-access insert

我正在使用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中的表格布局如下所示:

table layout in acces

我的应用程序核心地插入了其他值,但我把它们留下来保留一个最小的例子。

1 个答案:

答案 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

但是,字符串连接有效,我感到有点困惑。变量学生的价值是多少?您应该获得与仅使用一个参数的参数化查询相同的错误。