C# 对象引用未设置为C中对象SQL Server的实例#
我在SQL Server中使用了此过程,并在SQL Server Management Studio中进行了尝试,它在我的数据库中运行良好,但在c#中不起作用:C# 对象引用未设置为C中对象SQL Server的实例#,c#,sql-server,C#,Sql Server,我在SQL Server中使用了此过程,并在SQL Server Management Studio中进行了尝试,它在我的数据库中运行良好,但在c#中不起作用: Create Procedure BorrowIsCorrect @ProductName nvarchar(100), @PersonId nvarchar(50), @HBD bit, @count int output as Begin select @count = count(*)
Create Procedure BorrowIsCorrect
@ProductName nvarchar(100),
@PersonId nvarchar(50),
@HBD bit,
@count int output
as
Begin
select @count = count(*)
from BorrowTable
where Person_Identity = @PersonId
and Product_Name = @ProductName
and H_B_D = @HBD
return @count
end
这是我的c语言代码:
但C#中的这段代码引发了一个异常
对象引用未设置为对象的实例
我怎样才能修好它
谢谢
当我调试它时,一切都很好,直到这一行:
return ((int)(cmd.ExecuteScalar()) == 1) ? true : false;
或者我尝试了这行代码而不是上面的代码:
object result = (int)(cmd.ExecuteScalar());
结果变量设置为无值,因为仅在执行cmd.ExecuteScalar()时才会发生异常
编辑:
我发现结果值计算正确,但没有返回到对象中,如您所见:
在cmd.parameters
中执行cmd.ExecuteScalar()
后,如果展开count
(结果和返回值形式为proc),我们现在会看到四个变量(正确),如下所示,其值为1
(结果正确),但cmd.ExecuteScalar()
返回的对象为空
最后,我找到了一种解决问题的巧妙方法(我认为这不是一种标准方法):
检查您的borrow
变量及其Person或Product
内部类实例borrow、Person和Product均不为空。我未使用StoredProcedure尝试此函数,它工作正常,但使用过程不工作!!whay downvote?我知道nullreference异常,但这一个似乎有点不同。在StackOverflow链接中没有找到答案。异常在哪里引发?这里:return((int)(cmd.ExecuteScalar())==1)?真:假;当执行查询时,这不是一种棘手的方法-它只是从SqlCommand
访问输出参数的方法!您还可以使用一个名称:intresult=cmd.Parameters[“@count”].Value代码>以获取值。。。。
object result = (int)(cmd.ExecuteScalar());
cmd.ExecuteScalar();
int result=cmd.Parameters[0].Value;