針對固定資料表、多重不定查詢條件(AND/OR 組合)的動態 SQL 建構需求,說明 UI 層、BLL 層、DAL 層三層架構下的字串拼接實作。
Dim student As New Login.Model.CmbQueryInfo ' 將三組下拉選單(欄位、運算子、內容)與組合關係(與/或)賦值給實體 student.FileName1 = cmbWord1.Text student.Operator1 = cmbOperator1.Text student.QueryContent1 = txtContent1.Text student.CompositionRelation1 = cmbRelation1.Text ' ... 同理處理第 2、3 組條件 Dim table As DataTable = Bquery.cmbQuery(student, "T_Worklog_Info")
ModifyFields 將中文欄位名對應資料庫欄位(如「卡號」→ cardno),將「與/或」轉為 and/or。
主查詢方法 cmbQuery 依條件組合 WHERE 子句:
Dim sql As String = "SELECT * FROM " & tableName & " WHERE 1=1 "
If student.FileName1 <> "" Then
sql &= student.CompositionRelation1 & " " & student.FileName1 & " " & student.Operator1 & " '" & student.QueryContent1 & "' "
' 依此類推處理第 2、3 條件
End If
' 執行 SQL 回傳 DataTable
此模式適用於固定資料表、多條件動態查詢情境,雖屬傳統字串拼接方式,但結構清晰,易於理解與擴充。現代開發建議改用參數化查詢或 ORM 以防 SQL 注入。