如何比较存储过程的输出?



我想先检查用户是否存在,所以我在SQL Server中创建了一个存储过程来检查。

CREATE PROCEDURE Login
@username varchar(20), 
@password varchar(20),
@status int output
AS
IF EXISTS (SELECT username, password 
FROM SystemUser 
WHERE username = @username AND password = @password)
SET @status = 1
ELSE
SET @status = 0

然后,使用ASP。. NET Webforms,我正在为用户创建一个登录页面

protected void login(object sender, EventArgs e)
{
String connstr = WebConfigurationManager.ConnectionStrings["Sports"].ToString();
SqlConnection conn = new SqlConnection(connstr);

String username = txt_Username.Text;
String password = txt_password.Text;
SqlCommand login = new SqlCommand("userLogin", conn);
login.CommandType = CommandType.StoredProcedure;
login.Parameters.Add(new SqlParameter("@username", username));
login.Parameters.Add(new SqlParameter("@password", password));
SqlParameter loginstatus = login.Parameters.Add("@status", SqlDbType.Int);
loginstatus.Direction = ParameterDirection.Output;
conn.Open();
login.ExecuteNonQuery();
conn.Close();
if (loginstatus.GetInt32 == 1)
{
Response.Write("hello");
Response.Redirect("Home.aspx");
}
}

但是,我得到一个错误:

错误CS1061 'SqlParameter'不包含'GetInt32'的定义,并且没有可访问的扩展方法'GetInt32'接受类型'SqlParameter'的第一个参数可以找到(您是否缺少using指令或程序集引用?)

知道如何比较if条件下存储过程的输出吗?

Thanks in advance

我尝试了不同类型的方法,如.value。希望知道如何将值与int型进行比较。

您可以使用.Value

获取值
if ((int)loginstatus.Value == 1)
{
...
}

你的代码中还有其他问题。

您将密码以明文形式存储在数据库表中。

请使用usingSqlConnection自动处理,SqlCommand的注释相同。

和在声明变量时请使用有意义的名称,如SqlCommand loginlogin这个名字很不清楚。应该是command或者sqlCommand

相关内容

  • 没有找到相关文章

最新更新