0

我试图更新数据库中的数据,但它显示了一个异常,即“=”附近的语法不正确。

 SqlCommand cmd = new SqlCommand("upgrade LoginForm set Password ='" + txtConPassword.Text + "' where UserName ='" + txtUser.Text + "' ", conn);
                var test = cmd.ExecuteNonQuery();
                if (test == 1)
                {
                    MessageBox.Show("Password has been reset");
                }
                else
                {
                    MessageBox.Show("Password did not reset");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed....." + ex.Message);

            }
4

4 回答 4

4

首先将您的更改upgradeupdate. 第二次使用参数化查询。

SqlCommand cmd = new SqlCommand("update LoginForm set Password = @password where UserName = @user", conn);
cmd.Parameters.AddWithValue("@password", txtConPassword.Text);
cmd.Parameters.AddWithValue("@user", txtUser.Text);
var test = cmd.ExecuteNonQuery();

if (test == 1)
{
    MessageBox.Show("Password has been reset");
}
else
{
    MessageBox.Show("Password did not reset");
}

参数化查询可保护您免受 SQL 注入攻击。变量类型也由框架解析(在将DateTime变量传递给查询时很有用)。

另外请更准确地标记您的问题,因为有很多 DBMS 引擎,有时可能很难猜出您使用的是什么 DBMS。

于 2013-11-07T10:59:09.893 回答
1

在您使用升级的 sql 查询中,请使用更新而不是升级

替换这个:

SqlCommand cmd = new SqlCommand("upgrade LoginForm set Password ='" + txtConPassword.Text + "' where UserName ='" + txtUser.Text + "' ", conn);

有以下内容:

SqlCommand cmd = new SqlCommand("update LoginForm set Password ='" + txtConPassword.Text + "' where UserName ='" + txtUser.Text + "' ", conn);

此外,请不要将您的值直接分配给 sql 参数查询,因为它可能导致 sql 参数注入攻击。

于 2013-11-07T10:58:51.453 回答
0

升级应该是更新

另外,在将任何代码发布到生产环境之前,请查看 SQL 参数化和密码哈希

于 2013-11-07T10:59:28.243 回答
-2

您可以以另一种方式使用相同的代码:

SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommadnText = "update LoginForm set Password ='" + txtConPassword.Text + "' where UserName ='" + txtUser.Text + "'";
cmd.Connection = conn;
conn.Open();
                var test = cmd.ExecuteNonQuery();
                if (test == 1)
                {
                    MessageBox.Show("Password has been reset");
                }
                else
                {
                    MessageBox.Show("Password did not reset");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed....." + ex.Message);

            }
            finally
            {
               if (conn.State == ConnectionState.Open)
               {
                   conn.Close();
               }
            }
于 2013-11-07T11:04:32.313 回答