SQLCommand SqlParameter UPDATE C# 中的默认列值

SQLCommand SqlParameter Default Column Value in UPDATE C#

如何将默认值设置为SqlCommand SqlParameter的值?

SqlCommand 是 class 包含在 System.Data.SqlClient

我的架构不接受 DBNull.Value 作为值

SqlCommand command = new SqlCommand();
command.Parameters.Add(new SqlParameter("column_1", SqlDbType.VarChar, 1) { Value = DBNull.Value });

正如 lboshuizen 指出的那样,如果您的 "schema" 没有取 null,或者存储过程或查询的参数不能为 null,尝试给它一个 null 值可能会失败。在这种情况下,如果您知道它不接受它,您需要了解为什么要尝试将其设置为 null。我会猜测一个空字符串而不是 null 会起作用,或者其他合理的东西。

SqlParameterCollection属性Parameters有一个AddWithValue方法:

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue(v=vs.110).aspx

您只需插入 null 即可为您处理:

command.Parameters.AddWithValue("@parameter", null);

如果您不能提供 null,您可以提供类似于空字符串的内容:

command.Parameters.AddWithvalue("@parameter", "");

您也很少需要使用此机制指定数据类型。

如果架构不接受 null,则表明该列是必需的并且需要一个合理的值。

为列使用默认值是架构的 属性。

  1. 因此,要么更改架构以提供默认值。 ALTER TABLE {TABLENAME} ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
  2. 在您的应用程序代码中选择一个有效(非空)默认值并将其用作参数中的值。 const string default = "unknown"; ... SqlCommand command = new SqlCommand(); command.Parameters.Add(new SqlParameter("column_1", SqlDbType.VarChar, 1) { Value = default });

注意:更改架构以接受 NULL 被视为作弊:-)