【发布时间】:2013-07-30 01:44:26
【问题描述】:
我有以下功能;
public int GetLoginClaim(IsValidLogin Obj)
{
SqlConnection DBCon = new SqlConnection(ConString);
SqlCommand CmdSelect = new SqlCommand("IsValidLogin", DBCon);
CmdSelect.CommandType = CommandType.StoredProcedure;
DBCon.Open();
try
{
CmdSelect.Parameters.AddWithValue("@UserName", Obj.Username);
CmdSelect.Parameters.AddWithValue("@Password", Obj.Password);
return (int)CmdSelect.ExecuteScalar();
}
catch
{
throw;
}
finally
{
CmdSelect.Dispose();
DBCon.Close();
DBCon.Dispose();
}
}
以及它所依赖的以下存储过程;
USE [SMania]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[IsValidLogin]
@UserName varchar(32),
@Password varchar(32)
As
if exists(Select * From NewClientTB Where UserName = @UserName And Password = @Password)
return(1)
else
return(0)
存储过程在 sql server 上执行时工作正常,但是当从我上面发布的函数调用时,它会出错。上面的函数在我的数据访问层。所以在堆栈跟踪中,我对上述函数有以下错误: NullReferenceException:对象引用未设置为对象的实例。谁能解决这个问题?
【问题讨论】:
-
您是否尝试过调试并观察什么变量为空?
-
是的,检查对象,看看 obj.username 或 obj.password 是否为空
-
我没查,我现在查
-
尝试使用 select 而不是 return
Select 1 else Select 0在.net 中你可以使用 ExecuteReader() 并使用 data[0] 值 -
NullReferenceException的几乎所有情况都是相同的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。
标签: c# sql-server-2008 c#-4.0 stored-procedures ado.net