【问题标题】:Check if username is in the database using ASP.Net使用 ASP.Net 检查用户名是否在数据库中
【发布时间】:2016-10-09 22:40:20
【问题描述】:

我想检查一个用户名是否已经在数据库中。它伴随着我的更新声明。我有这段代码,但我不知道在哪里放置 select 语句:

protected void btn_update_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(conn);
    con.Open();

    str = "update UserData set Password=@Password where UserName='" + txtUser.Text + "'";

    com = new SqlCommand(str, con);

    com.Parameters.Add(new SqlParameter("@Password", SqlDbType.VarChar));
    com.Parameters["@Password"].Value = BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text);

    com.ExecuteNonQuery();

    con.Close();
    Label1.Visible = true;
    Label1.Text = "Password changed Successfully!" ;

    con.Close();
}

我想要类似的东西

"Select Username from Userdata Where Username = txtUser.Text"

【问题讨论】:

  • 您的问题不清楚,但您需要选择命令的目的是什么
  • @NazirUllah 选择用户名是否在数据库中,如果是,继续。如果没有,错误

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


【解决方案1】:

这里不需要SELECTExecuteNonQuery() 返回受影响的行数,这意味着当它返回 0 时,数据库中没有给定名称的用户。如果一切顺利,它应该返回 1。

您的代码容易受到 SQL 注入和资源泄漏的影响。这是一个更好的版本:

protected void btn_update_Click(object sender, EventArgs e)
{
    using(var con = new SqlConnection(conn))
    {        
        con.Open();
        var commandTest = "update UserData set Password=@Password where UserName=@Username";

        using(var com = new SqlCommand(commandTest, con))
        {
            com.Parameters.AddWithValue("@Username", txtUser.Text);
            com.Parameters.AddWithValue("@Password", BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text));

            if(com.ExecuteNonQuery() == 1)
            {
                Label1.Visible = true;
                Label1.Text = "Password changed Successfully!" ;            
            }
        }
    }
}

【讨论】:

  • 给我一个错误,先生 CommandText 属性尚未初始化
  • 受影响的行是 if (com.ExecuteNonQuery() == 1)
猜你喜欢
  • 1970-01-01
  • 2021-03-20
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 2018-10-03
相关资源
最近更新 更多