第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

使用 AddWithValue 方法添加一個(gè)新的 where 子句

使用 AddWithValue 方法添加一個(gè)新的 where 子句

C#
慕的地6264312 2021-11-28 16:07:21
我的問題很簡單,但我仍然搜索了 2 多個(gè)小時(shí)才能找到解決方案。在 C# 中,我有一個(gè) where 子句:where ?hospitalID然后我將這個(gè)值(hospitalID)與我的條件綁定: cmd.Parameters.AddWithValue("?hospitalID", (filters.hospitalID != 0) ? "operation.hospitalID=" + filters.hospitalID : "true");所以我在這里要說的是:如果變量 filters.hospitalID 不為零,則繼續(xù)創(chuàng)建條件 ( where operation.hospitalID=filters.hospitalID)。否則“無效”條件 ( where true)。如果我手動更改字符串,where operation.hospitalID=2它會起作用。但是使用 AddWithValue 方法,它根本不起作用。
查看完整描述

2 回答

?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以在參數(shù)值中傳遞 SQL 代碼,但 SQL 引擎不會將其視為代碼 - 因此它不會運(yùn)行。

這就是為什么使用參數(shù)可以保護(hù)您免受 SQL 注入的原因。


但是,這并不意味著您不能忽略參數(shù)中傳遞的特定值,您只需要稍微更改 SQL 代碼即可:


SELECT * -- Note that best practice is to specify the columns list, not *

FROM operation

WHERE hospitalID = @hospitalID

OR @hospitalID IS NULL

請注意,我已將其更改0為null- 因?yàn)樵?值可能是有效值(即使 HospitalID 以 1 開頭,您也可能希望對其他某些列使用相同的技術(shù),其中0是有效值)。


查看完整回答
反對 回復(fù) 2021-11-28
?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

我想你對使用感到困惑 AddWithValue


假設(shè)這是我的查詢


string sql = "SELECT * FROM SomeTable WHERE hospitalID=@ParamValue";

要替換ParamValue,我可以這樣做:


using (SqlConnection conn = new SqlConnection())

using (SqlCommand cmd = new SqlCommand(sql, conn))

{

    cmd.Parameters.Add(new SqlParameter("ParamValue", someValue));

    da.Fill(ds);

}

這意味著,在您的情況下,您只需傳遞 value 而不是 statement operation.hospitalID=filters.hospitalID。


所以代碼喜歡:


string sqlParam = "SELECT * FROM SomeTable WHERE hospitalID=@ParamValue";

string sqlWithoutParam = "SELECT * FROM SomeTable";

要替換ParamValue,我可以這樣做:


    if(filters != null && filters.hospitalID != 0)

    {

        using (SqlConnection conn = new SqlConnection())

        using (SqlCommand cmd = new SqlCommand(sqlParam, conn))

        {

            cmd.Parameters.Add(new SqlParameter("ParamValue", filters.hospitalID ));

            da.Fill(ds);

        }

    }

    else

    {

         using (SqlConnection conn = new SqlConnection())

         using (SqlCommand cmd = new SqlCommand(sqlWithoutParam, conn))

         {

            da.Fill(ds);

         }

    }


查看完整回答
反對 回復(fù) 2021-11-28
  • 2 回答
  • 0 關(guān)注
  • 337 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號