我在UPDATE语句中得到了#34;语法错误"运行以下Access语句时出错。我如何克服这个过程?
这是我的网页代码的相关部分。
protected void Button1_Click(object sender, EventArgs e)
{
string connect = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\Users\\Prasat PVS\\Documents\\db.mdb";
string q1 = "SELECT * FROM users WHERE password ='" + TextBox1.Text + "'";
string q2 = "UPDATE users SET password='"+TextBox2.Text+"' WHERE password='"+TextBox1.Text+"'";
using (OleDbConnection con = new OleDbConnection(connect))
{
con.Open();
using (OleDbCommand cmd = new OleDbCommand(q1, con))
{
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
using (OleDbConnection con1 = new OleDbConnection(connect))
{
con1.Open();
using (OleDbCommand cmd1 = new OleDbCommand(q2, con1))
{
cmd1.ExecuteNonQuery();
}
Label1.Text = "Your Password Has Been Changed Successfully";
con1.Close();
con.Close();
}
}
else
{
Label1.Text = "Your Password Is Incorrect Try Again";
}
}
}
}
答案 0 :(得分:1)
也许问题是因为您使用密码作为密码字段的名称...而是使用pass或其他
答案 1 :(得分:0)
我敢打赌,你的密码中有撇号。如果是这种情况,你会得到类似UPDATE users SET password = 'pass'word'...
的东西,这显然是错误的语法。这是我能看到的最可能导致这样的错误的事情。
参数化查询的另一点......
当你在这里时,我在评论中提到了这一点,但你最好只运行一个查询(你的更新,在你添加了用户名检查后)并检查{的结果{1}}知道是否有任何行受到影响(密码已成功更改)(用户名或密码不正确)。