【问题标题】:Where is the Syntax error in this VB.net code?此 VB.net 代码中的语法错误在哪里?
【发布时间】:2016-03-31 21:15:46
【问题描述】:

我正在为大学做一个项目,我们刚刚开始了解 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

我们怀疑这可能是一个简单的修复,但我们根本找不到错误!帮助! :(

【问题讨论】:

  • studentID ='" 错过了一个勾号...使用参数作为 where 你不会有那个...
  • 为什么不像其他的那样使用 Where 子句的参数?它可以防止您遇到的丢失刻度问题
  • 现在,点击好人给你的答案旁边的复选标记,
  • 下次写出sqlString进行调试。

标签: vb.net ms-access


【解决方案1】:

模块是reserved word in MS-Access。你需要用方括号括起来

Dim sqlString As String = "UPDATE [Student] SET [module] = @module, ....

顺便说一句,我不明白你为什么对每个字段都使用参数,而不是在 WHERE 子句中。随处使用它们。这样可以避免由于 WHERE 条件值周围缺少引号引起的其他错误。

【讨论】:

  • 谢谢,我很欣赏这个解释性的答案,而不是所有的反对票,哈哈。请记住,我们已经在 VB.net 上进行了两个 1 小时的教程,并且一直在学习,我认为我们做得还不错,哈哈
  • 不要对否决票大惊小怪。遵循help center 中解释的规则。尽职尽责地搜索并发布一些代码来解释您的问题。每天迈出一小步,您的销售代表就会开始进步
最近更新 更多