我正在为大学做一个项目,我们刚刚开始学习VB.net。我们的任务是创建一个从模拟数据库中提取数据的表单,并像大学的注册表/学生空间一样,他们可以看到正在采取的模块,DOB等......
我们不断收到错误代码:
UPDATE语句中的语法错误。
每次我们尝试运行表格的一部分,我们为新模块注册学生。下面是我们为实现这一目标而尝试运行的代码。
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim sqlString As String = "UPDATE [Student] SET module = @module, moduleName = @moduleName, credit = @credit, moduleLeader = @moduleLeader WHERE studentID =" & frmMenuOptionsStudent.lblStaffNo.Text & "'"
Dim cmd As New OleDbCommand(sqlString, conn)
cmd.Parameters.AddWithValue("@module", ComboBox1.Text)
cmd.Parameters.AddWithValue("@moduleName", TextBox2.Text)
cmd.Parameters.AddWithValue("@credit", TextBox3.Text)
cmd.Parameters.AddWithValue("@moduleLeader", TextBox4.Text)
Try
conn.Open()
cmd.ExecuteNonQuery()
MessageBox.Show("New Module Added")
conn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
我们怀疑这可能是一个简单的修复,但我们根本找不到错误!救命! :(
答案 0 :(得分:4)
模块是reserved word in MS-Access。你需要方括号
Dim sqlString As String = "UPDATE [Student] SET [module] = @module, ....
顺便说一下,我无法理解为什么你在每个字段使用参数而不在WHERE子句中使用参数。只需在各处使用它们。这样可以避免因WHERE条件值的缺失引起的其他错误。