[英]C# update a db entry with DBNull.value seems to error
好吧,也许我正在解决这个错误。 我们将会看到。
因此,我正在检查一些数据。 该数据将为Int32类型。 或多或少,如果该项目不是我的标志之一,我想将其设置为DBNull.value
。
我想确定的是该列是可为空的,因此,如果我不输入任何内容,则应将其设置为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?
在表的定义中,值是可为空的,因此您无需担心。
虽然发布了正确的答案,但最终我却没有使用这个答案,因为我的同事不希望我对??做“魔术”,所以他们让我这样做:
int? temp;
if(temp.HasValue){
cmd.addInputParameters("@a", temp, DBType.Int32);
}else{
cmd.addInputParameters("@a", DBNull.Value, DBType.Int32);
}
怎么样:
int? test = content
...
cmd.addInputParameters("@a", (object)test ?? DbNull.Value, DBType.Int32);
您的问题确实很难理解,但我想您要说的是您想要一个可能为空的整数。 只需将test声明为可为null的int而不是常规int。 所以:
int? test = null;
尝试使用此代码在db中插入可为空的整数。 我已经将int设置为可为空的数据类型,为此,必须强制db中的“测试”列为可为空。
int content = 5; //set for sake of program;
int? test = null;
if (content == 5)
{
test = content;
}
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "insert into TABLE (columnNameforTest) values ( @test)";
cmd.Parameters.AddWithValue("@test", test);
SqlConnection con = new SqlConnection("yourconnectionstring");
int i = cmd.ExecuteNonQuery();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.