none
DbCommand → sql.Parameters是否有必要定義型別、長度? RRS feed

  • 問題

  • public DataTable Get_Select_AAA_DataTable(String hCode)
    {

       DbCommand sql = IDbCommands.Get_QueryCostCenter();

       sql.Parameters.Add("HCode", DbType.String, 10).Value = hCode;

       return sql.FillTable();

    }

    原本就知道DB欄位的型態、傳進的參數也做了定義了

    查了一下傳入的參數就算不定義型別、長度,不給的話就是當你 sql command 下了之後由資料庫去決定

    *******  如果不定義Parameters的型別、長度的話,以下是我的想法 *******

    優點:當長度過長會彈回錯誤,反而很快找到哪裡有問題。

    缺點:

    1.假設定死長度是5,當傳進去的參數其實有錯誤,會變成不知道是哪裡有錯,

             因為where 條件找不到,就只會送回0筆資料而已,感覺這樣反而難找錯誤。

             (誤以為只是條件不符合沒資料)

    2.假設定死長度是5,未來遇到碼不夠,DB欄位長度改成6....不就GG了

    ※ 就會遇到上面我提到的缺點1、再來就是變成要掃所有的Code,去將5 改成 6

    官方好像是建議要設定長度? 所以到底有必要定義嗎?

    想聽聽各位前輩的意見









    • 已編輯 天氣 2014年7月17日 上午 02:43
    2014年7月17日 上午 02:32

所有回覆