我有一条异常消息:
形式参数“@LoginHash”未声明为 OUTPUT 参数,而是在请求的输出中传递的实际参数。
我的数据库代码:
create table Account
(
Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
Identifier INT NOT NULL,
Passphrase INT NOT NULL
);
GO
CREATE PROCEDURE Authenticate (@LoginHash INT, @PasswordHash INT, @Result BIT OUTPUT)
AS
BEGIN TRANSACTION
if ((select count(Identifier) from Account where (Identifier=@LoginHash and Passphrase=@PasswordHash))>0)
set @Result=1
else
set @Result=0;
COMMIT
GO
我的 ado.net 应用程序代码:
SqlCommand cmd = new SqlCommand("Authenticate", SqlCon);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter par = cmd.Parameters.Add("LoginHash", SqlDbType.Int);
par.Direction = ParameterDirection.Input;
SqlParameter par1 = cmd.Parameters.Add("PasswordHash", SqlDbType.Int);
par.Direction = ParameterDirection.Input;
SqlParameter par2 = cmd.Parameters.Add("Result", SqlDbType.Bit);
par.Direction = ParameterDirection.Output;
var result = (bool)cmd.ExecuteScalar();//exception there
如何解决?我更改了以下代码:
SqlCommand cmd = new SqlCommand(Text, SqlCon);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter par = cmd.Parameters.AddWithValue("@LoginHash", (SqlInt32)loginHash);
SqlParameter par1 = cmd.Parameters.AddWithValue("@PasswordHash", (SqlInt32)passwordHash);
SqlParameter par2 = cmd.Parameters.Add("@Result",SqlDbType.Bit);
par2.Direction = ParameterDirection.Output;
现在我有一个错误 NullReferenceException() 发生在同一行。