SqlParameter - 设置为默认值
SqlParameter - Setting to DEFAULT Value
如何将 SqlParameter 的值设置为 SQL INSERT 语句的 DEFAULT
关键字的等效值?
MSDN documentation 对 "use null or do not set Value to use the default value for the parameter." 说 但是,执行任一操作都会导致 SqlException 抱怨未提供预期的参数。我还尝试将参数设置为 DBNull.Value,但这会导致出现关于不允许空值的投诉。
正确的做法是什么?
-- table schema
CREATE TABLE SomeTable (Field INT NOT NULL DEFAULT(1));
using (var command = this.conn.CreateCommand())
{
command.CommandText = "INSERT [dbo].[SomeTable] ([Field]) VALUES (@p0);";
var param = new SqlParameter();
param.ParameterName = "@p0";
//param.Value = ??;
command.Parameters.Add(param);
command.ExecuteNonQuery();
}
根据我发现的信息,将 null
分配给值的技巧有效,但用于存储过程参数时。
我想您想使用您发布的代码将一些自定义值插入 table 以及默认值。如果是这样,我想使您的代码工作的最简单方法是在未指定值时调用不同的查询:
...
int? myValue = null; // I assumed You use a nullable int to pass the value to the method
...
if (!myValue.HasValue)
{
command.CommandText = "INSERT [dbo].[SomeTable] ([Field]) VALUES (DEFAULT);";
}
else
{
command.CommandText = "INSERT [dbo].[SomeTable] ([Field]) VALUES (@p0);";
var param = new SqlParameter();
param.ParameterName = "@p0";
param.Value = myValue.Value;
param.DbType = System.Data.DbType.Int32;
command.Parameters.Add(param);
}
command.ExecuteNonQuery();
这应该允许您处理默认和非默认情况。
如何将 SqlParameter 的值设置为 SQL INSERT 语句的 DEFAULT
关键字的等效值?
MSDN documentation 对 "use null or do not set Value to use the default value for the parameter." 说 但是,执行任一操作都会导致 SqlException 抱怨未提供预期的参数。我还尝试将参数设置为 DBNull.Value,但这会导致出现关于不允许空值的投诉。
正确的做法是什么?
-- table schema
CREATE TABLE SomeTable (Field INT NOT NULL DEFAULT(1));
using (var command = this.conn.CreateCommand())
{
command.CommandText = "INSERT [dbo].[SomeTable] ([Field]) VALUES (@p0);";
var param = new SqlParameter();
param.ParameterName = "@p0";
//param.Value = ??;
command.Parameters.Add(param);
command.ExecuteNonQuery();
}
根据我发现的信息,将 null
分配给值的技巧有效,但用于存储过程参数时。
我想您想使用您发布的代码将一些自定义值插入 table 以及默认值。如果是这样,我想使您的代码工作的最简单方法是在未指定值时调用不同的查询:
...
int? myValue = null; // I assumed You use a nullable int to pass the value to the method
...
if (!myValue.HasValue)
{
command.CommandText = "INSERT [dbo].[SomeTable] ([Field]) VALUES (DEFAULT);";
}
else
{
command.CommandText = "INSERT [dbo].[SomeTable] ([Field]) VALUES (@p0);";
var param = new SqlParameter();
param.ParameterName = "@p0";
param.Value = myValue.Value;
param.DbType = System.Data.DbType.Int32;
command.Parameters.Add(param);
}
command.ExecuteNonQuery();
这应该允许您处理默认和非默认情况。