SqlCommand如何通过传参数的方式插入null?

 
微软准备怎么解决?加急...
问: 请看下面的例子: string sql; sql = "insert into Example (ProductID, ProductName, Description) values (@ProductID, @ProductName, @Description)"; string ProductID = "001"; string ProductName = "Hardisk"; string Description = null; //注意,我想向Description列中插入一个null值 SqlCommand cmd = new SqlCommand(sql, cn); cmd.Parameters.Add ("@ProductID", ProductID); cmd.Parameters.Add ("@ProductName", ProductName); cmd.Parameters.Add ("@Description", Description); cn.Open(); ExecuteNonQuery(); 问题:当Description为null的时候,该语句无法被执行,就因为给SQL的参数传了个null值,而我还就想插入null值,该怎么办呢?微软是怎么考虑的? 别告诉我用空字符串代替啊!这只是一个例子,实际上有时候这种列有外键约束,插入""是找不到对应的外键的,再说还有别的数据类型。 这对我们来说是个影响整个系统的大问题,急急急!!! ———————————— 另外,北京的朋友们注意了,我们中关村大厦已经发现一例非典型肺炎的病例,该公司全体放假,我们也惶惶不可终日,感觉一声咳嗽比伊拉克上空的飞机呼啸声都恐怖。平时吃饭时大厦挤得满满的地下餐厅忽然间变得格外冷清。从来都没有感觉死亡离我们如此的靠近... ______________________________________________________________________________________________ 答1: 非典型肺炎:http://218.5.79.176/cgi-bin/forum/viewpost.cgi?which=paowang&id=287184 ______________________________________________________________________________________________ 答2: 插入空值的时候,不要插入null,而插入DBNull.Value这个常量 这个常量表示数据库的空值 ______________________________________________________________________________________________ 答3: 你是要我这样? if(Description == null) { cmd.Parameters.Add ("@Description", DBNull.Value); } else { cmd.Parameters.Add ("@Description", Description); } ______________________________________________________________________________________________ 答4: 对,没错 你可以写成: cmd.Parameters.Add ("@Description", Description==null?DBNull.Value:Description); ______________________________________________________________________________________________ 答5: dbnull.value ______________________________________________________________________________________________ 答6: 写存储过程,为变量设定初值为NULL,然后不传递该变量的值就行了

你可能感兴趣的:(SqlCommand如何通过传参数的方式插入null?)