gpt4 book ai didi

.net - SqlParameter - 设置为默认值

转载 作者:行者123 更新时间:2023-12-02 04:19:37 24 4
gpt4 key购买 nike

如何设置SqlParameter的值相当于 SQL INSERT 语句的 DEFAULT 关键字?

MSDN documentation表示“使用 null 或不设置 Value 以使用参数的默认值。”但是,执行任一操作都会导致 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 分配给值的技巧是有效的,但是当用于存储过程参数时。

我猜您想使用您发布的代码将一些自定义值以及默认值插入到表中。如果是这样,我想让您的代码工作的最简单方法是在未指定值时调用不同的查询:

...
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();

这应该允许您处理默认和非默认情况。

关于.net - SqlParameter - 设置为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31393218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com