好吧,也许我正在解决这个错误。我们会看到的。
所以我正在检查一些数据。该数据将是 Int32 类型。或多或少,如果该项目不是我的标志之一,我想将其设置为DBNull.value
,我相信。
我要确定的是该列可以为空,所以如果我没有在其中输入任何内容,它将被设置为空。
这是我的程序逻辑:
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?
在表的定义中,值是可以为空的,所以你不需要担心这个。
虽然发布了正确答案,但它不是我最终使用的答案,因为我的同事不想让我用 ?? 做“魔术”,所以他们让我这样做:
int? temp;
if(temp.HasValue){
cmd.addInputParameters("@a", temp, DBType.Int32);
}else{
cmd.addInputParameters("@a", DBNull.Value, DBType.Int32);
}