附代码
protected void Button3_Click(object sender, EventArgs e)
    {
         string user, pwd;
        user = User.Text;
        pwd = oldpwd.Text;
        if (user != "" && pwd != "")
        {
            string connsql = "Data Source=PC-200809241637\\SQLEXPRESS;Initial Catalog=库存表;Integrated Security=True";
            SqlConnection conn = new SqlConnection(connsql);
            conn.Open();            string mysql = "SELECT * from yonghu where 用户名='"+user+"'and 密码='"+pwd+"'";
            SqlCommand cmd = new SqlCommand(mysql, conn);
            SqlDataReader dr = cmd.ExecuteReader(); 
            if (dr.Read())
            {
                if (newpwd.Text != "" && newpwd2.Text != "" && newpwd.Text == newpwd2.Text)
                {
                    SqlCommand ccmd = new SqlCommand("update yonghu set 密码='" + newpwd.Text + "' where 用户名='"+user+"',conn);
                    ccmd.ExecuteNonQuery();
                    Label5.Text = "密码修改成功";
                }
                else { Label5.Text = "输入的新密码不一致"; }            }
            else
            {
                Label5.Text = "用户名或密码错误";
            }
            
            conn.Close();
        }
         SqlCommand ccmd = new SqlCommand("update yonghu set 密码='" + newpwd.Text + "' where 用户名='"+user+"',conn);这行的最后,说是常量中有换行符还有这么用@参数防止SQL注入  帮忙小改下

解决方案 »

  1.   

    登录完 就开始修改密码了
    "update yonghu set 密码='" + newpwd.Text + "' where 用户名='"+user+"'改成
    "update yonghu set 密码='" + newpwd.Text + "' where 用户名='"+user+"'"末尾少了以个"
      

  2.   

    我是用存储过程的
    create procedure updateAdmin
    @name nvarchar(50),
    @pwd nvarchar(50),
    @power int
    as
    update Admin set password=@pwd, power=@power where name=@name
    goC#代码        public bool UpdateAdmin(string name, string pwd, int power)
            {
                SqlCommand cmd = new SqlCommand("updateAdmin", Conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = name;
                cmd.Parameters.Add("@pwd", SqlDbType.NVarChar).Value = pwd;
                cmd.Parameters.Add("@power", SqlDbType.Int).Value = power;
                Conn.Open();
                int result = cmd.ExecuteNonQuery();
                Conn.Close();
                if (result > 0)
                    return true;
                else
                    return false;
            }
    不知道这样写有什么不好的地方。望高手指教
      

  3.   


    //最后面少了个双引号            string str = "update yonghu set password=@password where username=@username";
                SqlCommand cmd = new SqlCommand(str,conn);
                cmd.Parameters.AddWithValue("@username", username.Text);
                cmd.Parameters.AddWithValue("@password", password.Text);
      

  4.   

    不对啊~~按照1楼的加了引号,SqlCommand ccmd = new SqlCommand("update yonghu set 密码='" + newpwd.Text + "' where 用户名='"+user+"'",conn); 
    错的更多了,都是缺少using指令(SqlConnection,SqlCommand SqlDataReader  ) 这些,大家详细看看,是不是哪里有虾米问题?
      

  5.   

    using System.Data.SqlClient;
      

  6.   

    在错误的地方点ctrl+ .(句号), 然后选第一项
      

  7.   

    嗯,能运行了,不过在点修改密码的时候 异常详细信息: System.InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。 源错误: 
    行 44:                 {
    行 45:                     SqlCommand ccmd = new SqlCommand("update yonghu set 密码='"+newpwd.Text+"' where 用户名='"+user+"'",conn);
    行 46:                     ccmd.ExecuteNonQuery();行 47: 
    行 48:                     Label5.Text = "密码修改成功";
     
      

  8.   

    好了,加个dr close();就好了,来结贴,谢谢楼上各位,分不多,委屈大家了,我是新手,大家别见笑,呵呵,1楼的,昨天的登录帖子你也回复了,今天又第一时间回的~~谢谢,还有孟子老大~~大名人啊~~呵呵,也来回复了~~忒有面子了