2016-11-26 45 views
-1

我正面對着我的查詢這個問題。我希望你能幫我解決它。爲什麼這個聲明不能在數據庫中更新

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 

預先感謝您^^

+0

你可以添加一些關於你的數據庫的細節,比如ER圖或數據字典。 –

+0

也可以添加一些代碼片段。僅僅用sql語法來判斷問題真的很難 –

+0

您沒有分享涉及的錯誤,但使用SQL參數將很好的解決這個問題。您也不應該重複使用DB提供程序對象 – Plutonix

回答

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' 

您應該能夠直接在數據庫管理系統進行了聲明,並正確地有它的功能。但是,仔細看看。你看到了什麼?

我看到一個AND其中應該有一個,在列更新。 AND僅適用於WHEREON條款,不在列表中。

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

我還看到一些潛在的混淆,你的vb程序創建的值爲timeout。目前尚不清楚您的vb TimeOfDay變量是以24小時格式(13:14:15)還是以am/pm格式(01:14:15 PM)呈現。

最後,我看到一個非常常見的錯誤。 SQL語句是jammed onto one line,好像它是由一位精神病患者APL程序員在20世紀80年代寫的。這使您的語言在一個語言程序幾乎不可能閱讀。

+0

非常感謝你,缺少的空間是現在我知道的問題:)再次感謝你的信息。我學到了很多:D – shinbona

相關問題