我想先检查用户是否存在,所以我在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.NETWebforms为用户创建一个登录页面
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"的定义,并且找不到接受"SqlParameter"类型的第一个参数的可访问扩展方法"GetInt32"(是否缺少using指令或程序集引用?)
知道如何比较if条件下存储过程的输出吗?
先谢了
我尝试了不同类型的方法,比如.value
,希望知道如何将值与int进行比较。
1条答案
按热度按时间8xiog9wr1#
可以使用
.Value
获取该值您的代码中还存在其他问题。
您将密码以纯文本形式存储在数据库表中。
请将
using
与SqlConnection
一起使用以自动处理,SqlCommand
的注解相同。并且请使用有意义的名字当声明变量象
SqlCommand login
.它是非常不清楚由这名字login
.它应该是command
或sqlCommand