一千萬個為什麽

搜索

使用用戶輸入構建SQL查詢字符串

我必須使用用戶在網頁上選擇的值來創建一個字符串,

假設我需要為具有不同搜索條件的多臺機器顯示文件...

我目前使用此代碼:

DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection();
connection.ConnectionString = ConfigurationManager
               .ConnectionStrings["DBConnectionString"].ConnectionString;
connection.Open();
SqlCommand sqlCmd = new SqlCommand
  ("SELECT FileID FROM Files
    WHERE [email protected] and date= @date", connection);
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

sqlCmd.Parameters.AddWithValue("@machineID", machineID);
sqlCmd.Parameters.AddWithValue("@date", date);

sqlDa.Fill(dt);

現在這是一個固定的查詢,用戶只有一臺機器,只選擇一個日期......

我想進行一個查詢,其中用戶有多個搜索選項,如類型或大小,如果他/她想要取決於他/她選擇的內容。

如果他/她可以選擇多臺機器......

SELECT FileID FROM Files
WHERE ([email protected] or MachineID = @machineID2...)
AND (date= @date and [email protected] and [email protected] )

所有這些都發生在運行時...否則我必須為循環創建以逐個放置多臺機器......並根據用戶選擇的情況進行多次查詢...

這很有趣,我可以使用一些幫助......

最佳答案

You can use WHERE MachineID IN ('Machine1', 'Machine2', 'Machine3', ... 'MachineN')

然後在你的循環中你只需添加1..n機器。 IN子句使用1個元素或n個元素,所以應該沒問題。

但是,我會考慮使用存儲過程來執行此操作,而不是將SQL硬編碼到應用程序中。

轉載註明原文: 使用用戶輸入構建SQL查詢字符串