ヌルとデータベースに関するqustionsを読んでいてもちょっと固執しています。私はどのようにデータベースフォームC#にNULLを送ることができるか把握しようとしています。メソッドsingatureは、それがOKですが、私はヌルを渡すとき、それは言うint型nullでないと呼び出されたときにヌル値をTSQLデータベースに挿入
MyMethod(string category, int? calories, int vegetarianFriendlyMeal);
です。
SqlCommand.Prepareメソッドでは、すべてのパラメータに明示的に設定された型が必要です。
データベースにNULLを渡すことを許可し、以下のコードで明示的にタイプを設定する方法を教えていただけますか?ありがとうございました。
command.Parameters.Add("@cat", SqlDbType.VarChar, 2).Value = category;
command.Parameters.Add("@veg", SqlDbType.Int).Value = vegetarianFriendlyMeal;
if (calories == null)
{
command.Parameters.AddWithValue("@calories", DBNull.Value);
}
else
{
command.Parameters.Add("@calories", SqlDbType.Int).Value = calories;
}
私も同じ結果と
SqlParameter cal = new SqlParameter("@calories", calories == null ? (object)DBNull.Value : calories);
command.Parameters.Add(cal);
を試してみました。
'.Value = calories ?? (オブジェクト)DBNull.Value; 'うまく動作するはずです。唯一の違いは値なので、なぜ2つの異なる方法でパラメータを作成しますか? – Luaan
これはコード全体ですか?一見しても何の問題もありません。クエリに他のパラメータがありますか? – Andrey
@Luaanこれもありがとうございます、そのifステートメントを保存します。 – Bendom