在向导中检查用户名后,如何在占位符中检索用户信息

本文关键字:用户 占位符 检索 信息 向导 检查 | 更新日期: 2023-09-27 18:16:27

我正试图为web应用程序的管理开发一个简单的用户管理系统。我用的是ASP。. NET向导控件用于此任务。我只是把一个文本框写的用户名,当管理员点击下一步按钮,系统应该检查用户名是否存在于数据库或不。如果存在,系统应该在管理员的占位符中显示他的信息。

我正在努力完成这项任务。我在代码后面做了以下操作:

protected void Page_Load(object sender, EventArgs e)
{
    //Session["Username"] = Username.Text;
    string connString = "Data Source=localhost''sqlexpress;Initial Catalog=testdb;Integrated Security=True";
    string cmdText = "SELECT * FROM employee WHERE Username = @Username";
    //For checking the user
    if (Request.QueryString["Username"] != null)
    {
        String strUserName = Request.QueryString["Username"];
        ////Check userName Here
        //String strReturnStatus = "false";
        if (CheckUsername(Request.QueryString["Username"]) == true)
        {
            //strReturnStatus = "true";
            try
            {
                SqlConnection conn = new SqlConnection(connString);
                conn.Open();
                SqlDataReader myReader = null;
                SqlCommand myCommand = new SqlCommand(cmdText, conn);
                myReader = myCommand.ExecuteReader();
                while (myReader.Read())
                {
                    Console.WriteLine(myReader["Name"].ToString());
                    Console.WriteLine(myReader["Job"].ToString());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
        //Response.Clear();
        //Response.Write(strReturnStatus);
        //Response.End();
    }
}
private bool CheckUsername(string username)
{
    string connString = "Data Source=localhost''sqlexpress;Initial Catalog=testdb;Integrated Security=True";
    string cmdText = "SELECT * FROM employee WHERE Username = '" + username + "'";
    using(SqlConnection conn = new SqlConnection(connString))
    {
         conn.Open(); // Open DB connection.
         using (SqlCommand cmd = new SqlCommand(cmdText, conn))
         {
             int count = (int)cmd.ExecuteScalar();
             // True (> 0) when the username exists, false (= 0) when the username does not exist.
             return (count > 0);
         }
    }
}

我试图通过在TextBox中编写任何用户名来测试这一点,但是当我单击向导的Next按钮时,我没有得到任何结果,该按钮应该将我重定向到占位符或任何应该显示用户信息的控件。我现在只想显示用户的信息如果他的用户名存在于数据库中。怎么做呢?

在向导中检查用户名后,如何在占位符中检索用户信息

首先,您需要了解页面加载和回发的概念。在Page_Load中编写的代码将在每次通过在浏览器中输入URL或由于按钮单击事件加载页面时执行。应该将只执行一次的代码放在

中。
if(!isPostback)
{
//code to be need to be executed for the first time
//only goes within this block
}

然后正如Asken建议的那样,也看看SQL注入

现在关于这个问题,在你的Page_Load事件中,你有:

string cmdText = "SELECT * FROM employee WHERE Username = @Username";

你需要设置@Username参数的值,你可以这样做:

myCommand.Parameters.Add("@Username", SqlDbType.VarChar, 30); //assumption: UserName column is of varchar type length of 30
nonqueryCommand.Parameters["@Username"].Value = strUserName;