SqlCeCommand 可为空的值

Posted

技术标签:

【中文标题】SqlCeCommand 可为空的值【英文标题】:SqlCeCommand nullable values 【发布时间】:2011-05-11 00:42:27 【问题描述】:

我的代码:

SqlCeConnection sql = new SqlCeConnection(@"Data Source=C:\DB.sdf");
sql.Open();
cmd = new SqlCeCommand("INSERT INTO xxx(aaa) VALUES(@aaa)", sql);
String param = null;  //doesn't work
//String param = "blah" //works
cmd.Parameters.AddWithValue("@aaa", param);
cmd.ExecuteNonQuery(); //(1)
sql.Close();

(1) 当param 为空时抛出异常。数据库允许列 aaa 中的值为空。如何将 null 插入到表 xxx 中?

例外:Parameterized query 'INSERT INTO xxx(aaa) VALUES(@aaa)' expects a parameter value which was not supplied.

【问题讨论】:

【参考方案1】:

尝试改用DBNull.Value

var param = DBNull.Value;

【讨论】:

【参考方案2】:

使用

var param = DBNull.Value;

null 与 DBNull 不同

【讨论】:

可以将 DBNull.Value 转换为 String 吗?

以上是关于SqlCeCommand 可为空的值的主要内容,如果未能解决你的问题,请参考以下文章

为啥 C# 中的 async/await 会返回可为空的值,即使被告知不要这样做?

为啥 TargetNullValue 更新可为空的 Source

为可为空的函数参数提供“null”时如何使用默认值?

如何在 VB.NET 中将可为空的 DateTime 设置为空?

如何将 C# 可为空的 int 转换为 int

输入数据集可为空的日期值存在问题