检查数据库的用户名和密码

时间:2014-12-03 15:49:57

标签: c# sql asp.net sql-server

我正在使用asp.net创建一个网站。到目前为止,我已经完成了一个注册页面,它将详细信息保存到数据库表中。

如何检查该表中是否有用户名和密码,然后允许他们进入下一页?

这是我的注册代码;

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["userinfo.ConnectionString"].ConnectionString);
conn.Open();

string insertQuery = "INSERT INTO [user] (UserName, FirstName, LastName, Email, Password, Country) VALUES (@uname, @fname, @lname, @email, @password, @country)";

SqlCommand comm = new SqlCommand(insertQuery, conn);

comm.Parameters.AddWithValue("@uname", usernametextbox.Text);
comm.Parameters.AddWithValue("@fname", fnametextbox.Text);
comm.Parameters.AddWithValue("@lname", lnametextbox.Text);
comm.Parameters.AddWithValue("@email", emailtextbox.Text);
comm.Parameters.AddWithValue("@country", DropDownListcountry.Text);
comm.Parameters.AddWithValue("@password", passwordtextbox.Text);

comm.ExecuteNonQuery();

conn.Close();

我猜我需要创建一个SELECT查询,可能带有if语句吗?

2 个答案:

答案 0 :(得分:0)

克里斯,

你正在对这个问题进行投票,因为你正在问一些你可以非常轻易地使用谷歌自己解决的问题。

话虽如此,是的,你是正确的,你需要使用SELECT语句。我不打算给你确切的.NET或SQL语法,因为这会剥夺你的学习经验。但是,弄清楚如何进行SELECT COUNT查询。您基本上希望使用提供的用户名和密码计算已存在的行数。您可以使用ExecuteScalar而不是使用ExecuteNonQuery,它返回单个值。

然后在.NET代码中,您将查看返回的计数值。如果是0,继续。如果它超过0,则做其他事情。

所有这一切,.NET都有一些内置工具可以帮助您完成所有这些工作。找到并使用它们!

将来,在来到这里并寻求帮助之前,请尝试花更多时间自己做一些研究。

祝你好运!

答案 1 :(得分:0)

如果您在登录页面中使用文本框来输入用户名和密码。

      string connectionstring = WebConfigurationManager.ConnectionStrings["userinfo.ConnectionString"].ConnectionString;
                string sqlstring;
                sqlstring = "Select UserName,Password from user  where UserName='" + 
Texboxusername.Text + "' and Password ='" + Textboxpassword.Text + "'";

                SqlConnection con = new SqlConnection(connectionstring);
                SqlCommand command = new SqlCommand(sqlstring, con);

                System.Data.SqlClient.SqlDataReader reader;

                // open a connection with sqldatabase
                con.Open();

                reader = command.ExecuteReader();

                if (reader.Read())//Reader.read() true if found in database
                {

        Response.Redirect("userHome.aspx");
        }
        con.close();

第二个解决方案正在使用表单身份验证。从工具箱添加登录到您的登录设计页面。单击它两次。它的相同代码,但Texboxusername.Text和Textboxpassword.Text使用Login.Username和Login.Password。

 if (reader.Read())
{ e.Authenticated = true;}
else{e.Authenticated=false;}

最后在Web.config中将其添加到某个地方<system.web> .. </system.web>;

   <forms loginUrl="login.aspx" defaultUrl="userHome.aspx" timeout="60"/>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>

经过身份验证的用户将自动重定向到defaultUrl,人们只能从loginUrl访问,这要归功于。 如果您有关于UnobtrusiveValidationMode的错误。 在<configuration>... </configuration>;

中添加此内容
<add key="ValidationSettings:UnobtrusiveValidationMode" value="none"/>