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

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

通過參數(shù)傳遞“IS NULL”

通過參數(shù)傳遞“IS NULL”

C#
哆啦的時(shí)光機(jī) 2022-10-23 15:52:15
我有 5 個(gè)文本框:<TextBox Name="txbFirstName" /><TextBox Name="txbLastName" /><TextBox Name="txbCity" />        <TextBox Name="txbAddress" /><TextBox Name="txbPhone" />我想使用文本框輸入生成簡(jiǎn)單的 SELECT 語句。為此,我使用參數(shù)和 AddWithValue:database.SetQuery("SELECT * FROM tblCustomer WHERE FirstName = @FirstName AND LastName = @LastName AND City = @City AND Address = @Address AND Phone = @Phone;");database.sqlCommand.Parameters.AddWithValue("@FirstName", txbFirstName.Text);database.sqlCommand.Parameters.AddWithValue("@LastName", txbLastName.Text);database.sqlCommand.Parameters.AddWithValue("@City", txbCity.Text);database.sqlCommand.Parameters.AddWithValue("@Address", txbAddress.Text);database.sqlCommand.Parameters.AddWithValue("@Phone", txbPhone.Text);現(xiàn)在這工作得很好,但我想做的是,如果文本框輸入為空,則使用 NULL 處理它。但據(jù)我所知,不能在查詢中使用“= NULL”,而應(yīng)該使用“IS NULL”,這意味著我不能寫這樣的東西:if (txbCity.Text == "")    database.sqlCommand.Parameters.AddWithValue("@City", null);else    database.sqlCommand.Parameters.AddWithValue("@City", txbCity.Text);是否可以將“IS NULL”傳遞給帶有代碼的參數(shù)?因此,如果 txbCity 和 txbAddress 為空,例如:名字 = 約翰姓氏 = 母鹿城市 = ""地址 = ""電話 = 812-393-8144我希望我的查詢看起來像這樣:SELECT * FROM tblCustomer WHERE FirstName = "John" AND LastName = "Doe" AND City IS NULL AND Address IS NULL AND Phone = "812-393-8144";
查看完整描述

3 回答

?
牧羊人nacy

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

基本上:沒有。


除非您禁用了 ANSI NULL 語法(請(qǐng)不要這樣做),否則您需要不同的 SQL來測(cè)試NULL. 一個(gè)常見的技巧(易于編寫,但效率不高)是作弊:


WHERE (FirstName = @FirstName OR (@FirstName IS NULL AND FirstName IS NULL))

AND (LastName = @LastName OR (@LastName IS NULL AND LastName IS NULL))

-- etc x5

(或您想要為空值執(zhí)行的任何測(cè)試) - 并使用類似的東西:


database.sqlCommand.Parameters.AddWithValue("@FirstName", txbFirstName.Text.DBNullIfEmpty());

database.sqlCommand.Parameters.AddWithValue("@LastName", txbLastName.Text.DBNullIfEmpty());

// etc x5

在哪里DBNullIfEmpty看起來像:


internal static class MyExtensionMethods

{

    public static object DBNullIfEmpty(this string value)

    {

        if(string.IsNullOrWhiteSpace(value)) return DBNull.Value;

        return value;

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-10-23
?
ITMISS

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

您可以為 AddWithValue() 創(chuàng)建一個(gè)擴(kuò)展方法,并在實(shí)際值為 NULL 時(shí)傳遞一個(gè)額外的第三個(gè)參數(shù)作為您想要的值


public static class SqlParameterCollectionExtensions {

    public static SqlParameter AddWithValue(this SqlParameterCollection target, string parameterName, object value, object nullValue) {

        if (value == null) {

            return target.AddWithValue(parameterName, nullValue);

        }

        return target.AddWithValue(parameterName, value);

    }

}

后來這樣稱呼它


database.sqlCommand.Parameters.AddWithValue("@City", txbCity.Text, "IS NULL");


查看完整回答
反對(duì) 回復(fù) 2022-10-23
?
繁星淼淼

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

SQL Server 數(shù)據(jù)庫中的值對(duì)應(yīng)的參數(shù)NULL值是DBNull.Value。

Parameters.Add(“@NAME”, SqlDbType.<type>).Value = argument == null ? DBNull.Value : argument;



查看完整回答
反對(duì) 回復(fù) 2022-10-23
  • 3 回答
  • 0 關(guān)注
  • 110 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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