簡體   English   中英

使用MySQL在vb.net中更新查詢語法錯誤

[英]UPDATE query syntax error in vb.net using mysql

在此處輸入圖片說明 在這里我的查詢是否有人可以發現錯誤

    str = "update student set course='" & ComboBox1.Text & "',name='" & 
TextBox2.Text & "',f_name='" & TextBox3.Text & "',address='" & TextBox4.Text 
& "' ,tel_no='" & TextBox5.Text & "',qualification='" & TextBox6.Text & 
"',remarks='" & TextBox7.Text & "',school/college='" & TextBox8.Text & 
"',fee='" & TextBox10.Text & "' where reg_no=" & TextBox9.Text & " "

這是構建此查詢的更好方法:

str = "update student " &
        " set course= @course, name= @name, f_name= @fname, address= @address," & 
        " tel_no= @tel, qualification = @qualification, remarks= @remarks," & 
        " `school/college`=@school, fee= @fee" &
      " where reg_no= @regno"

Using cn  As New MySqlConnection("connection string here"), _
      cmd As New MySqlCommand(str, cn)

    'Use actual column types/lengths from your DB here
    cmd.Parameters.Add("@course", MySqlDbType.VarChar, 15).Value = ComboBox1.Text
    cmd.Parameters.Add("@name", MySqlDbType.VarChar, 25).Value = TextBox2.Text
    cmd.Parameters.Add("@fname", MySqlDbtype.VarChar, 25).Value = TextBox3.Text
    cmd.Parameters.Add("@address", MySqlDbType.VarChar, 120).Value = TextBox4.Text
    cmd.Parameters.Add("@tel", MySqlDbType.VarChar, 25).Value = TextBox5.Text
    cmd.Parameters.Add("@qualification", MySqlDbType.VarChar, 40).Value = TextBox6.Text
    cmd.Parameters.Add("@remarks", MySqlDbType.VarString).Value = TextBox7.Text
    cmd.Parameters.Add("@school", MySqlDbType.VarChar, 40).Value = TextBox8.Text
    cmd.Parameters.Add("@fee", MySqlDbType.Decimal, 6, 2).Value = Convert.ToDecimal(TextBox10.Text)
    cmd.Parameters.Add("@regno", MySqlDbType.Int32).Value = Integer.Parse(TextBox9.Text)

    cn.Open()
    cmd.ExecuteNonQuery()
End Using

這為您做了很多事情:

  1. 它可以防止SQL注入攻擊
  2. 它允許您接受包含單引號( ' )之類的數據。 如果有人用單引號引起來,那么您擁有的代碼將失敗。
  3. 它會自動處理諸如sql的日期格式之類的事情。
  4. 它更快,因為數據庫服務器可以在編譯查詢后緩存執行計划,並隨着時間的推移使用統計信息來獲得更好的執行計划。
  5. 它將更可靠地關閉數據庫連接。 如果拋出異常,當前代碼將使數據庫連接掛起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM