之前有类似的问题,但是答案不是我想要的。如果引用为NULL或者还没有被分配值,我想将NULL值插入到SQL Server数据库中。目前我正在测试是否为空,代码如下:
String testString = null;
if (testString == null)
{
command.Parameters.AddParameter(new SqlParameter("@column", DBNull.Value);
}
else
{
command.Parameters.AddParameter(new SqlParameter("@column", testString);
}
对我来说,这看起来感觉非常笨拙。我有很多值要插入到数据库中,像上面那样测试它们非常冗长。.Net难道没有以某种方式处理这个问题吗?我想也许如果我使用string而不是String,但似乎也不起作用。我找到了一些文章,讲述如何使用可空类型。
System.Nullable<T> variable
这似乎对于基元类型,如int?、char?、double?和bool?有效。那么这些可能适用于这些类型,但是字符串呢?我有什么遗漏吗?我应该使用哪种类型来表示原始值和字符串值,以便在插入它们之前不必反复测试值。
编辑: 在我得到太多关于三元运算符的答案之前,我喜欢它们,但在这种情况下不适用。如果我知道要给什么类型,那么它本可以在.NET框架中实现更低级别,并且如果我知道要使用的类型,则可以免费获得它。
编辑: 好的,那么帮我制定攻击计划。我将使用Nullable来处理我的基元类型(int?,double?等),对于我的字符串,我将使用String但进行??测试。这使得代码更简洁。我是否遗漏了什么内容,例如失去某些语义?
SqlDbType
枚举的重载来指定参数类型。 - Joel Coehoorn