【问题标题】:update statement in C#,sqlC#,sql中的更新语句
【发布时间】:2013-06-09 17:46:08
【问题描述】:

从我从 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>");
        }
    }

【问题讨论】:

  • 呃。 “Sql注入”,去谷歌,认真的。您的系统存在风险。现在,我可以使用更改密码来销毁您的数据库。
  • 然后阅读有关纯文本密码存储的信息。您不应该存储密码。你甚至不应该加密它们。您应该应用 salted hash 的密码(理想情况下使用每个用户的 salt) - 并存储散列 only。
  • 现在:咆哮——回到最初的问题:“工作不正常”是什么意思?怎么了?还是没有?
  • 呵呵,既然你的代码提到了“e-learningsystem”,这让 Bobby Tables 尤其心酸:xkcd.com/327
  • 更新后的值没有发送到数据库

标签: c# mysql


【解决方案1】:

您正在尝试通过调用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>");
    }

【讨论】:

  • 不,只有一个'ExecuteNonQuery'语句……你为什么打电话说也有???我无法理解@Parag Meshram
  • @Jiya 第一个是cmd1.ExecuteNonQuery();,第二个是if (cmd1.ExecuteNonQuery() &gt; 0)。它会运行两次更新语句。
  • @Jiya 它将执行您的UPDATE 语句两次。对于相同的测试,尝试用INSERT 语句替换更新。它将插入两条记录。
猜你喜欢
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多