gpt4 book ai didi

c# - INSERT 存储过程不接受空值

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:14 27 4
gpt4 key购买 nike

我已经从一个 SELECT 存储过程中执行了一个 SqlDataReader,并保存了这些值,其中一些值可能为空...而我并不知道。我正在尝试将这些值传递到 INSERT 存储过程的参数中。

当我尝试传递值时收到此错误:

"Proccedure or function 'insbuRenewal' expects parameter '@TransactionID', which was not supplied"

我的代码:

try
{
while (reader.Read())
{
insbuRenewal.Parameters["@SolarID"].Value = (decimal)reader["SolarID"];
insbuRenewal.Parameters["@ApplicationID"].Value
= reader["ApplicationID"].ToDecimalOrNull();
insbuRenewal.Parameters["@TransactionID"].Value
= reader["TransactionID"].ToStringOrNull();
insbuRenewal.Parameters["@Host"].Value
= reader["Host"].ToStringOrNull();

public static string ToStringOrNull(this object items)
{
if (items == null || items == DBNull.Value)
{
return null;
}
return items.ToString();
}

最佳答案

如果你这样做,你可以使用你拥有的方法:

insbuRenewal.Parameters.AddWithValue("@TransactionID",
reader["TransactionID"].ToStringOrNull());

代替:

insbuRenewal.Parameters["@TransactionID"].Value =
reader["TransactionID"].ToStringOrNull();

AddWithValue 接口(interface)对于您的所有 参数来说是一种更好的方法。不要预先添加它们;按需添加。


正如 Yosi 指出的那样。您真正需要的是:

insbuRenewal.Parameters.AddWithValue("@TransactionID", reader["TransactionID"]);

关于c# - INSERT 存储过程不接受空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232889/

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