1

SQL Server テーブルにレコードを挿入するサブルーチンがあります。コード:

    public void Insert_Met(int Counts, char Gender)
    {
        Dictionary<string, object> parameters = new Dictionary<string, object>();
        parameters.Add("@Counts", Counts);
        parameters.Add("@Gender", Gender);
        // run a stored procedure ExecuteNonQuery
    }

私は他のラインコード、

      int counts = Convert.ToInt32(numberUpdowncontrol1.Text);
       // from a control, maybe empty then it is null.
      Insert_Met(counts,'M');

私の質問は、Counts が null になることがあるので、コードを変更するにはどうすればよいですか?

ありがとう、

4

3 に答える 3

11

int? countsの代わりに使用int countsして、メソッド内の値を確認できます。

public void InsertMet(int? counts, char gender)
{
    Dictionary<string, object> parameters = new Dictionary<string, object>();
    parameters.Add("@Counts", counts.HasValue ? counts.Value : (object)DBNull.Value);
    parameters.Add("@Gender", gender);
    // run a stored procedure ExecuteNonQuery
}

これは、Windows フォームの数値アップダウン コントロールです。テキストを int 変数に代入するのは難しいと感じます。変更方法は?

上記のカウント値を適切に設定するには、次のようにします。

int value = (int)numberUpdowncontrol1.Value;
int? counts = !string.IsNullOrEmpty(numberUpdowncontrol1.Text) ? value : (int?)null;

InsertMet(counts, 'M');
于 2012-06-13T16:07:08.327 に答える
0

次のステートメントは常に非 null 値を生成します

int counts = Convert.ToInt32(null); // Result is 0
于 2012-06-13T16:33:53.277 に答える
0
int count = !(count == 0)? count ? (object)DBNull.Value

-カウントがゼロでない場合、カウント値をデータベースに保存します -ゼロの場合、保存します

于 2017-07-24T15:21:53.367 に答える