使用ASP.Net检查用户名是否在数据库中

时间:2016-06-09 10:20:44

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

我想检查数据库中是否已存在用户名。它伴随着我的更新声明。我有这个代码,我不知道在哪里放置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"

1 个答案:

答案 0 :(得分:2)

此处您不需要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!" ;            
            }
        }
    }
}