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

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

學(xué)校項目-當(dāng) nchar 設(shè)置為 9 位時,為什么我的 8 位數(shù)據(jù)會被插入?

學(xué)校項目-當(dāng) nchar 設(shè)置為 9 位時,為什么我的 8 位數(shù)據(jù)會被插入?

C#
一只萌萌小番薯 2021-07-06 17:11:04
這是一個學(xué)校項目,我感謝你的幫助。預(yù)期系統(tǒng)行為:當(dāng) txt 文件中的 SSN 列不等于 9 位時,不應(yīng)將包含該列的行插入到數(shù)據(jù)庫中。實際行為:當(dāng) SSN 列不等于 9 位時,它仍將其插入到數(shù)據(jù)庫中。要插入的列:Last name,F(xiàn)irst name,MI,SSAN和Payrate。SSAN 的存儲過程代碼:@SSAN nchar(9)這是我在包含我的 SQL 的類中執(zhí)行 SSAN 的方式:cmdSQL.Parameters.Add(new SqlParameter("@SSAN", SqlDbType.NChar));cmdSQL.Parameters["@SSAN"].Direction = ParameterDirection.Input;cmdSQL.Parameters["@SSAN"].Value = SSAN;這是我在主程序中驗證它的方法:if (strFields[3].Length == 9){        blnOK = true;}else{    blnOK = false;    Console.WriteLine("Error: Unable to Parse SSAN!");}這是我從主程序調(diào)用數(shù)據(jù)庫類的方式。  intRetCode = clsDatabase.InsertEmployee(strFields[2], strFields[0], strFields[1], strFields[3],                    Convert.ToDecimal(strFields[4]));問題:如何確保如果 SSAN 不等于 9 位,它所包含的所有行的數(shù)據(jù)都不會插入到數(shù)據(jù)庫中?
查看完整描述

1 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗 獲得超5個贊

您的問題出現(xiàn)在您的IsValidRecord. 您有一個變量 ,blnOK您可以來回切換它。

變量blnOK以 開頭true,然后strFields[0]被檢查。然后你設(shè)置blnOKtrueor false,這很好。但是,您隨后檢查strFields[1],并繼續(xù)設(shè)置blnOKtruefalse基于值,而不管之前的檢查是什么。這將貫穿您的所有領(lǐng)域。最終結(jié)果是 的結(jié)果IsValidRecord將始終是您檢查的最后一個字段的結(jié)果(在本例中為strFields[4]),無論其他檢查的結(jié)果如何。

解決此問題的簡單方法是,return blnOK;無論何時將其值更改為false,這都會導(dǎo)致函數(shù)“短路”,甚至不檢查任何其他字段。失敗的第一個字段將使整批字段失敗。

如果要檢查所有字段,則可以檢查blnOK每次檢查中的狀態(tài),并且僅在先前檢查中true未設(shè)置時才將其設(shè)置為false。

處理此問題的另一種方法是為每個字段設(shè)置一個變量,并返回所有值的集合。就像是:

private static Boolean IsValidRecord(String[] strFields)

{

    Boolean blnOK = true;

    Boolean bln0OK = true;

    Boolean bln1OK = true;

    Boolean bln2OK = true;

    Boolean bln3OK = true;

    Boolean bln4OK = true;

    Decimal decCheck;

    //Check all fields that must be validated


    if (String.IsNullOrWhiteSpace(strFields[0]))

    {

        Boolean bln0OK = false;

        Console.WriteLine("Error: Unable to Parse First Name!");

    }

    else

    {

        bln0OK = true;


    }

    if (String.IsNullOrWhiteSpace(strFields[1]))

    {

        bln1OK = false;

        Console.WriteLine("Error: Unable to Parse Middle Initial!");

    }

    else

    {

        bln1OK = true;


    }

    if (String.IsNullOrWhiteSpace(strFields[2]))

    {

        bln2OK = false;

        Console.WriteLine("Error: Unable to Parse Last Name!");

    }

    else

    {

        bln2OK = true;


    }


        if (strFields[3].Length == 9)

        {

                bln3OK = true;


        }

        else

        {

            bln3OK = false;

            Console.WriteLine("Error: Unable to Parse SSAN!");


        }

    if (strFields[4] == null)

    {

        bln4OK = false;

    }

    else

    {

        if (Decimal.TryParse(strFields[4], out decCheck))

        {

            bln4OK = true;


        }

        else

        {

            bln4OK = false;

            Console.WriteLine("Error: Unable to Parse PayRate!");

        }

    }

    blnOK = bln0OK && bln1OK && bln2OK && bln3OK && bln4OK; 

    return blnOK;

}

blnOK = bln0OK && bln1OK && bln2OK && bln3OK && bln4OK;有效,因為僅當(dāng)兩個操作數(shù)都為 時才&&返回。如果其中任何一個值為,則結(jié)果將為。truetruefalsefalse


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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