带有文本框和AD身份验证的SQL身份验证
问题描述:
嗨,我正在运行两种形式的身份验证。我运行的第一个身份验证是AD身份验证,可以正常工作。其次是确认用户名在SQL数据库中。我正在使用此代码来验证用户名是否存在于SQL中。带有文本框和AD身份验证的SQL身份验证
我得到的错误
操作“==”不能应用于类型“字符串”和“System.Data.SqlClient.SqlDataReader”
与此代码的操作数....
using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString))
{
SqlCommand cmd = new SqlCommand("select Username from dbo.users", con);
con.Open();
SqlDataReader sqlresult = cmd.ExecuteReader();
if (txtLoginID.Text == sqlresult)
{
Response.Redirect("account/orders.aspx");// Authenticated user redirects to default.aspx
}
else
{
Response.Redirect("default.aspx");// Authenticated user redirects to default.aspx
}
con.Close();
}
}
答
这里有几个问题。首先关闭您的查询:
select Username from dbo.users
正拉动表中的每条记录。这不是检查用户名是否存在的正确方法。你需要的东西是这样的:
select Username from dbo.users WHERE UserName = @UserName
凡@UserName
是parameter包含从txtLoginID.Text
值。完成此操作后,您可以使用:
if(sqlresult.HasRows)
{
Response.Redirect("account/orders.aspx");// Authenticated user redirects to default.aspx
}
else
{
Response.Redirect("default.aspx");// Authenticated user redirects to default.aspx
}
您还应该查看using
声明。
尽管如果您使用上述解决方案并不重要,但您得到该错误的原因很自我解释。您正试图将字符串值与SqlDataReader对象进行比较。这不可能。
您正在错误地使用SQLDataReader。检查[文档](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v = vs.110).aspx)。 – RadioSpace 2014-09-29 22:59:44