簡體   English   中英

如何在where子句中傳遞參數?

[英]How to pass parameter in where clause?

這就是我嘗試過的。 但是我沒有任何錯誤以及沒有輸出。 我做錯了。 以及為什么該查詢無法正常工作。

SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = '@term' AND paid_or_unpaid = '@Paid' ORDER BY Id DESC";
            cmd.Parameters.AddWithValue("@term", term);
            cmd.Parameters.AddWithValue("@Paid", paid);

但是,當我嘗試不帶參數的查詢時,我正在輸出。

不要在查詢參數中使用single Quotes '

SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC";
        cmd.Parameters.AddWithValue("@term", term);
        cmd.Parameters.AddWithValue("@Paid", paid);

根據我的評論-單引號不應出現-它們將參數更改為文字。 因此,您的查詢正在尋找emp_id為字符串'@term'並且不會使用傳入參數的平衡。

SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC";
        cmd.Parameters.AddWithValue("@term", term);
        cmd.Parameters.AddWithValue("@Paid", paid);

在單引號(')之間指定的任何內容都將被視為字符串。 因此,編寫參數名稱時不帶引號('),它將起作用。

"SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC"

其余代碼將相同。

SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC";
        cmd.Parameters.AddWithValue("@term", term);
        cmd.Parameters.AddWithValue("@Paid", paid);

首先,您不需要查詢字符串中的單引號:

cmd.CommandText = "SELECT balance FROM PersonalLoan_tb WHERE emp_id = @term AND paid_or_unpaid = @Paid ORDER BY Id DESC";

就是說,我告誡您不要使用AddWithValue() 這必須推斷出傳遞給字符串的類型-任何時候代碼不明確,就有被誤解的危險。 例如, 這里是一篇博客文章,解釋了為什么這不是一個好主意。

暫無
暫無

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

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