string co = "Update Accounts set password = '" + txtNew.Text + "' where Username='" + txtUse.Text + "' and Password = '" + txtPas.Text + "'";
上面显示了我的UPDATE语句。没有编译器错误或任何东西,甚至没有任何警告。
答案 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 + "'";
以上是您的查询,查询包含password
和Password
。
在set
附近,您将获得password
以及您获得Password
的位置