我想检查数据库中是否已存在用户名。它伴随着我的更新声明。我有这个代码,我不知道在哪里放置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"
答案 0 :(得分:2)
此处您不需要SELECT
。 ExecuteNonQuery()
返回受影响的行数,这意味着当它返回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!" ;
}
}
}
}