使用带有Access数据库的C#在ASP.NET中的UPDATE语句中出现语法错误

时间:2014-07-12 03:55:14

标签: c# asp.net ms-access

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

2 个答案:

答案 0 :(得分:1)

也许问题是因为您使用密码作为密码字段的名称...而是使用pass或其他

答案 1 :(得分:0)

我敢打赌,你的密码中有撇号。如果是这种情况,你会得到类似UPDATE users SET password = 'pass'word'...的东西,这显然是错误的语法。这是我能看到的最可能导致这样的错误的事情。

参数化查询的另一点......

当你在这里时,我在评论中提到了这一点,但你最好只运行一个查询(你的更新,在你添加了用户名检查后)并检查{的结果{1}}知道是否有任何行受到影响(密码已成功更改)(用户名或密码不正确)。