gpt4 book ai didi

c# - 未将对象引用设置为对象实例 由 DBNull.Value 引起

转载 作者:行者123 更新时间:2023-12-02 00:59:01 30 4
gpt4 key购买 nike

SqlCommand objsql = new SqlCommand();
.
.
objsql.Parameters.AddWithValue("@Param1", DBNull.Value);
.
.
.

我收到一个异常错误:

“对象引用未设置到对象的实例”

如果我这样做:

objsql.Parameters.AddWithValue("@PaymentMethodID", null);

我收到以下错误:参数化查询“(@SupplierQuoteID int,@PaymentMethodID nvarchar(4000),@DueDate d”需要参数“@PaymentMethodID”,但未提供该参数。"}

PaymentMethodID 是表中接受 null 的列。

此错误发生在此处:

string valHolder = null;
valHolder = objSqlCommand.ExecuteScalar().ToString();
singleValue = Convert.ToInt32(valHolder);

一次 objSqlCommand.ExecuteScalar().ToString();执行后,会抛出错误。记录被插入到表中,但 ExecuteScalar() 不返回任何内容值(value)!它应该返回当前最新的自动递增 pk,但事实并非如此。

注意:执行此行时会抛出我上面提到的所有错误

valHolder = objSqlCommand.ExecuteScalar().ToString(); 

以下是完整的错误:

System.NullReferenceException was caught
Message="Object reference not set to an instance of an object."
Source="........"
StackTrace:
at ......DAL.ExecuteSQL(SqlCommand sqlCmd, String typeOfExecution) in C:\Users\....\Desktop\........\DAL.cs:line 136
InnerException:

我应该做什么?

最佳答案

不要直接在 ExecuteScalar() 上调用 ToString()。首先调用 objSqlCommand.ExecuteScalar(),然后测试该变量是否为空。这很可能就是正在发生的事情。

如果您正在调用存储过程,请确保Select SCOPE_IDENTITY() 是存储过程的最后一行,否则将不会返回最后一个自动编号。

关于c# - 未将对象引用设置为对象实例 由 DBNull.Value 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3231280/

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