为什么无法在数据库中更新此语句

时间:2016-11-26 13:30:45

标签: mysql vb.net

我的查询面临这个问题。我希望你能帮助我解决它。

   MD = "UPDATE librarysystem.audit set timeout = '" & Today + "" + TimeOfDay & "' AND status='0' WHERE username = '" & AccountId & "'AND status = '1'"
           cmd = New MySqlCommand(MD, con)
           cmd.ExecuteNonQuery()

这是代码:

    connect()

    Dim result As Integer = MessageBox.Show("Are You Sure You Want To LOGOUT?", "Are You?", MessageBoxButtons.YesNo)
    If result = DialogResult.No Then
        Me.Show()
    ElseIf result = DialogResult.Yes Then

        connect()
        Dim time As DateTime
        time = Date.Today
        Dim a As Integer = 0
        MD = "UPDATE librarysystem.audit set timeout = '" & Today + "" + TimeOfDay & "' AND status='0' WHERE username = '" & AccountId & "'AND status = '1'"
        cmd = New MySqlCommand(MD, con)
        cmd.ExecuteNonQuery()

        AccountSettings.Hide()
        BorrowedBooks.Hide()
        LogHistory.Hide()
        Login.Hide()

        ReturnedBooks.Hide()
        SearchBooks.Hide()

    End If
End Sub

提前谢谢^^

1 个答案:

答案 0 :(得分:0)

SQL的一个深层麻烦就是你通常会在另一种语言中嵌入一种语言。这使得很难清楚地阅读两种语言的内容。这是从你的vb中提取的SQL。

UPDATE librarysystem.audit
   set timeout = '" & Today + "" + TimeOfDay & "'
   AND status='0'
 WHERE username = '" & AccountId & "'AND status = '1'"

这里有一些取代的样本值

UPDATE librarysystem.audit
   set timeout = '2016-11-26 13:14:15'
   AND status='0'
 WHERE username = 'SomeUserName'AND status = '1'

您应该能够直接在dbms上执行该语句并使其正常运行。但是,仔细看看。你看到了什么?

我看到AND要更新的列列表中应该有,AND仅适用于WHEREON条款,而不适用于列列表。

我在序列'SomeUserName'AND中看到SQL中缺少空格。

我还发现vb程序为timeout创建值的方式存在一些潜在的混淆。目前还不清楚您的vb TimeOfDay变量是以24小时格式(13:14:15)还是以上午/小时格式(01:14:15 PM)呈现。

最后,我看到了一个非常常见的错误。 SQL语句是jammed onto one line,好像它是由精神病APL程序员在20世纪80年代编写的。这使得您的语言语言程序几乎无法阅读。