2

C#でデフォルトをSQLServerに渡そうとしています。

このコードはnullを渡します。デフォルトを渡す方法はありますか?

foreach (SqlParameter Parameter in command.Parameters)
{
    if (Convert.ToString(Parameter.Value) == "")
    {
        Parameter.Value = DBNull.Value;
    }
}
4

3 に答える 3

5

パラメータを追加しないか、パラメータを追加して値をnullではなく DBNull.Value)に設定してください。どちらも同じ効果があります。パラメータは渡されないため、デフォルトが使用されます。

于 2013-02-14T21:51:01.680 に答える
2

SQL-Server(ストアドプロシージャ...)でパラメータのデフォルトを設定できます

(@parm varchar(5) = null)
AS
Begin...

そして、C#からパラメータをまったく渡さないでください。

于 2013-02-14T21:45:28.063 に答える
1

これは別の種類の解決策です。ストアドプロシージャでパラメータのデフォルト値を検索し(文字通り、変数の宣言での割り当てのパターン検索)、見つかったデフォルト値を返すように見えます。つまり... c#アプリからこのプロシージャを呼び出して、すべてのデフォルト値を取得し、それらをローカルのC#変数に割り当ててから、他のプロシージャを呼び出すときにそれらを使用できます。

http://www.codeproject.com/Articles/12939/Figure-Out-the-Default-Values-of-Stored-Procedure

そして、これがテーブル自体のデフォルト値を見つける方法です:(戻り値から括弧を取り除く必要があるかもしれません)

SELECT COLUMN_DEFAULT, replace(replace(COLUMN_DEFAULT,'(',''),')','') as DefaultWithNoParenthesis
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'WHATEVER'

幸運を!

于 2013-02-19T17:11:00.353 に答える