尝试执行过程后引发System.Data.SqlClient.SqlException

时间:2019-05-08 12:46:43

标签: sql asp.net tsql

我正在使用AngularJS和ASP.NET制作一个简单的应用程序,这是我的新手。我创建了一个SQL过程,但是每次执行它时,都会引发以下错误:

  

System.Data.SqlClient.SqlException:'过程或函数'LoginProc'   期望参数'@IsValid'未提供。'

如何解决此异常?这是存储过程的代码:

ALTER PROCEDURE LoginProc
@username VARCHAR(50),
@password VARCHAR(MAX),
@IsValid bit out
AS
BEGIN
SET @IsValid=(SELECT COUNT(username) from "User" WHERE username=N'@username' and password=N'@password')
END 

这是尝试执行该过程的代码:

public class db
    {
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings
    ["dbconnect"].ConnectionString);

        public int userlogin(User user)
        {
            int res;

            SqlCommand cmd = new SqlCommand("LoginProc", con);
            cmd.CommandType = CommandType.StoredProcedure;
            if (user.username != null && user.password != null) {
                cmd.Parameters.AddWithValue("@username", user.username);
                cmd.Parameters.AddWithValue("@password", user.password);
                SqlParameter oblogin = new SqlParameter();
                oblogin.ParameterName = "@IsVaild";
                oblogin.Direction = ParameterDirection.Output;
                oblogin.SqlDbType = SqlDbType.Bit;
                cmd.Parameters.Add(oblogin);
                con.Open();
                cmd.ExecuteNonQuery();
                res = Convert.ToInt32(oblogin.Value);
                con.Close();
            } 
            else
            {
                res = 0;
            }

            return res;
        }
    }

1 个答案:

答案 0 :(得分:1)

您在这里拼错了@IsValid:

oblogin.ParameterName = "@IsVaild";