C#,sql中的update语句

C#,sql中的update语句,c#,mysql,C#,Mysql,根据我从textbox1、textbox2获得的输入,我想用DB检查给定的用户名和密码组合是否可用,然后我想用textbox3中可用的输入更新密码。以下是我的代码,但我的更新语句似乎工作不正常,请帮助我更正它 protected void Button1_Click(object sender, EventArgs e) { MySqlConnection connection = new MySqlConnection("server=localhost; d

根据我从textbox1、textbox2获得的输入,我想用DB检查给定的用户名和密码组合是否可用,然后我想用textbox3中可用的输入更新密码。以下是我的代码,但我的更新语句似乎工作不正常,请帮助我更正它

     protected void Button1_Click(object sender, EventArgs e)
    {
        MySqlConnection connection = new MySqlConnection("server=localhost; database=e-learningsystem; uid=root; password=123;port=3307;");
        connection.Open();
        try
        {

            MySqlCommand cmd1 = new MySqlCommand("UPDATE lecturer Set Password= '" + TextBox3.Text + "' WHERE UserName='" + TextBox1.Text + "' AND Password='" + TextBox2.Text + "'", connection);
            cmd1.ExecuteNonQuery();
            if (cmd1.ExecuteNonQuery() > 0)
            {
                Response.Write(@"<script language='javascript'>alert('Your Password Has Been Changed successfully!, Congratulations!')</script>");
            }
            else
            {
                Response.Write(@"<script language='javascript'>alert('Your Password Has Not Been Changed successfully!, Sorry!')</script>");
            }
                connection.Close();
        }
        catch (Exception ex)
        {
            Response.Write(@"<script language='javascript'>alert(ex.Message)</script>");
        }
    }
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
MySqlConnection=newmysqlconnection(“服务器=localhost;数据库=e-learningsystem;uid=root;密码=123;端口=3307;”;
connection.Open();
尝试
{
MySqlCommand cmd1=new MySqlCommand(“更新讲师设置密码=”+TextBox3.Text+”,其中用户名=”+TextBox1.Text+”,密码=”+TextBox2.Text+”,连接);
cmd1.ExecuteOnQuery();
如果(cmd1.ExecuteNonQuery()>0)
{
响应。写(@“警报('您的密码已成功更改,恭喜!”);
}
其他的
{
响应。写入(@“警报('您的密码未成功更改!对不起!'));
}
connection.Close();
}
捕获(例外情况除外)
{
响应。写入(@“警报(例如消息)”);
}
}

您试图通过调用
ExecuteNonQuery
两次来更新密码。在第一次调用
ExecuteNonQuery
时,它将返回未收集的
1
,第二次调用
ExecuteNonQuery
时,它将返回
0
,因此它将始终执行
else
部分

进行以下更改-

    int updateCount = cmd1.ExecuteNonQuery();
    if (updateCount > 0)
    {
        Response.Write(@"<script language='javascript'>alert('Your Password Has Been Changed successfully!, Congratulations!')</script>");
    }
    else
    {
        Response.Write(@"<script language='javascript'>alert('Your Password Has Not Been Changed successfully!, Sorry!')</script>");
    }
int updateCount=cmd1.ExecuteNonQuery();
如果(更新计数>0)
{
响应。写(@“警报('您的密码已成功更改,恭喜!”);
}
其他的
{
响应。写入(@“警报('您的密码未成功更改!对不起!'));
}

Eugh。“Sql注入”,去谷歌看看,真的。您的系统有风险。现在,我可以用更改密码来破坏你的数据库。然后去阅读有关纯文本密码存储的内容。你不应该储存密码。你甚至不应该加密它们。你应该对密码应用一个salt散列(最好是每个用户的salt),并且只存储散列。现在:回到原来的问题:你说的“不能正常工作”是什么意思?会发生什么?还是没有?嘿,因为你的代码提到了“e-learningsystem”,这使得Bobby表特别令人痛心:更新后的值没有发送到DBNo,只有一条“ExecuteOnQuery”语句。。。你为什么告诉我那里太多了???我无法理解它@ParagMeshram@Jiya第一个是
cmd1.ExecuteNonQuery()if(cmd1.ExecuteNonQuery()>0)
。它将运行update语句两次。@Jiya它将执行您的
update
语句两次。对于相同的测试,请尝试使用
INSERT
语句替换update。它将插入两条记录。