0

さて、多分私はこれを間違って回っています。我々は見るであろう。

だから私がチェックしているいくつかのデータがあります。このデータはタイプInt32になります。多かれ少なかれ、アイテムが私の旗の1つではなかった場合、私はそれをとして設定したかったとDBNull.value思います。

私が判断しようとしているのは、列がnull許容であるということです。したがって、何も入力しない場合は、nullに設定されます。

これが私のプログラムロジックです:

int content = 5;  //set for sake of program;
int test;
if( content == 5){
  test = content;
}else{
  //i want test to be labeled as DBNULL.
  //didnt know if i could redefine here to be like:
  //      free(test); DBNull test = new DBNull;
}
//my companys db command
CommandFactory cmd = new CommandFactory();
cmd.commandText = "insert into TABLE ( value ) values ( @a )";
cmd.addInputParameters("@a", test, DBType.Int32);
...

この場合、どのようにdbnullになりますか?次のようになります:

if(test != -1){
    cmd.addInputParameters("@a", test, DBType.Int32);
}
//no param would be entered for @a, maybe forcing it to be null?

テーブルの定義では、値はnull許容であるため、それについて心配する必要はありません。

正解は掲載されていますが、同僚が私に「魔法」をしてほしくないので、それは私が最終的に使用したものではありません。

int? temp;
if(temp.HasValue){
    cmd.addInputParameters("@a", temp, DBType.Int32);
}else{
    cmd.addInputParameters("@a", DBNull.Value, DBType.Int32);
}
4

3 に答える 3

4

どうですか:

int? test = content
...
cmd.addInputParameters("@a", (object)test ?? DbNull.Value, DBType.Int32);
于 2012-08-24T15:07:05.067 に答える
0

あなたの質問は本当に理解するのが難しいです、しかしあなたが言っていることはあなたが可能なnull許容整数を持ちたいということだと思います。testを通常のintではなくnull許容のintとして宣言するだけです。それで:

int? test = null;

于 2012-08-24T15:06:31.763 に答える