C# - 在SQL Compact Edition表中插入null

时间:2011-03-30 08:53:14

标签: c# sql sql-server-ce

尝试使用参数将一些数据插入到SQL Compact Edition表中。我的表允许插入null,但是当我在下面运行我的代码时,我无法使其工作,因为其中一个参数有时会变为null,并且当参数为null时我想在该列中插入null。

我该如何解决这个问题?

string strConn = Properties.Settings.Default.SqlConnectionString;


        using (SqlCeConnection conn = new SqlCeConnection(strConn))
        {
            conn.Open();
            using (SqlCeCommand cmd = new SqlCeCommand("insert into table(ID, Name, Adress) values (@parm1, @parm2, @param3)", conn))
            {
                cmd.Parameters.AddWithValue("@parm1", ID);
                cmd.Parameters.AddWithValue("@parm2", Name);
                cmd.Parameters.AddWithValue("@parm3", Adress);

                cmd.ExecuteNonQuery();
            }
        }

4 个答案:

答案 0 :(得分:8)

我认为您可以将DBNull.Value作为空值传递给您:

cmd.Parameters.AddWithValue("@parm2", (Name as object) ?? DBNull.Value);

答案 1 :(得分:4)

检查你的参数是否== null,如果是,则插入DBNull代替它或省略参数。

.NET nulls和SQL nulls不同。

答案 2 :(得分:1)

也许这个问题的根源位于SQL查询字符串本身。 您声明了三个参数:

@parm1@parm2和 - 专注于拼写 - @param3

你设定: @parm1@parm1和 - 专注于拼写 - @parm3

我的猜测是整个@parm3@param3参数命名可能导致此问题。

答案 3 :(得分:0)

我使用以下扩展方法来设置可为空的参数。

public static class SqlExtensions
    {
        public static void AddNullableParameterWithValue(this SqlCeCommand cmd, string name, object value)
        {
            if (null != value)
                cmd.Parameters.AddWithValue(name, value);
            else
                cmd.Parameters.AddWithValue(name, DBNull.Value);
        }
    }