首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VB.NET MySQL 多變數 WHERE 條件參數化查詢寫法

     編輯:程式設計疑難解答

錯誤寫法(字串串接,有 SQL Injection 風險)


"select * from biao1 where id >= " & i & " and id <= " & j & " and name = '" & lk & "'"

正確寫法:參數化查詢


Imports MySql.Data.MySqlClient

Dim sql As String = "SELECT * FROM biao1 WHERE id >= @minId AND id <= @maxId AND name = @name"
Using conn As New MySqlConnection(connStr),
      cmd As New MySqlCommand(sql, conn)

    cmd.Parameters.AddWithValue("@minId", i)
    cmd.Parameters.AddWithValue("@maxId", j)
    cmd.Parameters.AddWithValue("@name", lk)

    conn.Open()
    Using reader = cmd.ExecuteReader()
        While reader.Read()
            ' 處理資料
        End While
    End Using
End Using

關鍵優勢

項目字串串接參數化查詢
安全性❌ SQL Injection✅ 自動轉義
效能每次重新編譯✅ 計畫快取重用
可讀性雜亂✅ SQL/參數分離
型別處理手動轉字串✅ 自動對應

進階:動態 WHERE 條件


Dim conditions As New List(Of String)
Dim params As New List(Of MySqlParameter)

If minId.HasValue Then
    conditions.Add("id >= @minId")
    params.Add(New MySqlParameter("@minId", minId.Value))
End If
If maxId.HasValue Then
    conditions.Add("id <= @maxId")
    params.Add(New MySqlParameter("@maxId", maxId.Value))
End If
If Not String.IsNullOrEmpty(name) Then
    conditions.Add("name = @name")
    params.Add(New MySqlParameter("@name", name))
End If

Dim sql = "SELECT * FROM biao1"
If conditions.Count > 0 Then sql &= " WHERE " & String.Join(" AND ", conditions)
' 後續建立 Command 並加入 params
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved