UPDATE语句中的语法错误c#

时间:2016-02-19 07:14:06

标签: c# ms-access

string co = "Update Accounts set password = '" + txtNew.Text + "'  where Username='" + txtUse.Text + "' and Password = '" + txtPas.Text + "'";

上面显示了我的UPDATE语句。没有编译器错误或任何东西,甚至没有任何警告。

2 个答案:

答案 0 :(得分:1)

强烈怀疑发生了这种情况,因为您的一个TextBox值包含一些转义字符,如O'Connors或其他内容。但由于你没有告诉他们的价值观,我们无法确定

但更重要的是,您应该始终使用parameterized queries。这种字符串连接对于SQL Injection攻击是开放的,因为准备好的语句会自动处理它们,所以您不必担心转义字符。

也可以将您的密码存储为纯文本。阅读:Best way to store password in database

using(var con = new OleDbConnection())
using(var cmd = con.CreateCommand())
{
   cmd.CommandText = @"Update Accounts set password = @newpass  
                       where Username = @user and Password = @pass";

   cmd.Parameters.Add("@newpass", OleDbType.VarWChar).Value = txtNew.Text;
   cmd.Parameters.Add("@user", OleDbType.VarWChar).Value = txtUse.Text;
   cmd.Parameters.Add("@pass", OleDbType.VarWChar).Value = txtPas.Text;

   con.Open();
   cmd.ExecuteNonQuery();
}

答案 1 :(得分:0)

string co = "Update Accounts set password = '" + txtNew.Text + "'  where Username='" + txtUse.Text + "' and Password = '" + txtPas.Text + "'";

以上是您的查询,查询包含passwordPassword

set附近,您将获得password以及您获得Password的位置