none
請問使用 sql parameter 處理 null / unicode 的方式? RRS feed

  • 問題

  • 各位好:

     

    小弟剛開始使用 sql parameter 來處理 sql command string。

    目前遇到,如果我要 update 一個欄位,例如:

     

    SQL_Command.Parameters.Add(New SqlParameter("@fileLink5", SqlDbType.VarChar))

    SQL_Command.Parameters("@fileLink5").Value = tx_fileLink5.Text

     

    這樣就可以將資料放進去。

     

    可是如果我想要在 tx_fileLink5.text 為空字串時,改為放 NULL 進去。

    請問要怎樣寫?

    因為我直接寫 DBNull ,VB2005 會跟我說他是一個資料格式,而寫不能被用在運算式裡面。

     

    還有就是使用 unicode 時,指令又要怎樣改?

     

    請指教,謝謝。

    2008年1月26日 上午 02:25

解答

  • :::有試過用DBNull.Value嗎???

    2008年1月26日 上午 03:04
  • // C#
    SQL_Command.Parameters.Add(new SqlParameter("@fileLink5", SqlDbType.NVarChar));
    SQL_Command.Parameters["@fileLink5"].Value = string.IsNullOrEmpty(tx_fileLink5.Text) ? DBNull.Value : tx_fileLink5.Text;

    2008年1月26日 上午 03:22

所有回覆

  • 你有試過直接用 Nothing 嗎 ?

    2008年1月26日 上午 02:33
    版主
  • :::有試過用DBNull.Value嗎???

    2008年1月26日 上午 03:04
  • // C#
    SQL_Command.Parameters.Add(new SqlParameter("@fileLink5", SqlDbType.NVarChar));
    SQL_Command.Parameters["@fileLink5"].Value = string.IsNullOrEmpty(tx_fileLink5.Text) ? DBNull.Value : tx_fileLink5.Text;

    2008年1月26日 上午 03:22
  • 各位好:

     

    Nothing 沒試過,壓根沒想到那邊去。

    不過剛剛測試,不被接受。

     

    但是 DBNull.Value 可以!於是改寫成

     

    SQL_Command.Parameters("@fileLink5").Value = IIf(String.IsNullOrEmpty(tx_fileLink5.Text), DBNull.Value, tx_fileLink5.Text)

     

    這樣。感謝感謝~

     

    至於 unicode ... 使用 sqlParameter 時,我發現東西直接進去了!

    不像使用自己拼湊 Command String 時,還要加個 N 在字串前面。

    是因為:

    SQL_Command.Parameters.Add(New SqlParameter("@contentTrans", SqlDbType.NVarChar))

    設定是 NVarChar 就會自動轉換。對嗎?

    2008年1月26日 上午 04:04
  • 程式語言這邊底層 MS 怎麼實作得不清楚...
    不過我想你應該知道 SQL Server 2005 中 varchar 與 nvarchar 的分別

    varchar [ ( n | max ) ]

    可變長度,非 Unicode 字元資料。n 可以是 1 到 8,000 的值。max 表示最大儲存體大小是 2^31-1 位元組。儲存體大小是輸入資料的實際長度再加上 2 位元組。輸入的資料長度可以是 0 字元。varchar 的 SQL-2003 同義字是 char varyingcharacter varying


    nvarchar [ ( n | max ) ]

    可變長度,Unicode 字元資料。n 可以是 1 到 4,000 的值。max 表示最大儲存體大小是 2^31-1 位元組。儲存體大小是輸入字元數的兩倍 + 2 位元組 (以位元組為單位)。輸入的資料長度可以是 0 字元。nvarchar 的 SQL-2003 同義字是 national char varyingnational character varying


    2008年1月26日 上午 04:29