c#和Access中的from子句语法错误

本文关键字:子句语法 错误 from 中的 Access | 更新日期: 2023-09-27 18:11:43

我一直得到这个运行时错误,syntax error in from clause。我已经尝试使用我的sql查询访问,它似乎还可以。

这是我的代码,我使用c# windows窗体与文本框和按钮

            OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:'Users'Misry27'Documents'Visual Studio 2010'Projects'Inventory'Inventory'bin'Debug'Inventory.mdb");
            OleDbCommand cmd = new OleDbCommand("select * from Employee where username = '" + this.tbUsername.Text + "' and password = '" + this.tbPassword.Text + "';", conn);
            OleDbDataReader dr;
            conn.Open();
            dr = cmd.ExecuteReader();
            int count = 0;
            while (dr.Read())
            {
                count = count + 1;
            }
            if (count == 1)
            {
                MessageBox.Show("Username or Password is correct");
            }
            else
            {
                MessageBox.Show("Username or Password Incorrect");
            }
            conn.Close();

c#和Access中的from子句语法错误

如上所述,PASSWORD是一个保留关键字,在从net执行查询时需要用方括号括起来。

通常的建议如下。使用参数化查询来避免解析问题和sql注入,在一次性对象周围使用using语句。

using(OleDbConnection conn = new OleDbConnection(a correct connection string here))
using(OleDbCommand cmd = new OleDbCommand(@"select * from Employee 
                                            where username = ? AND [Password] = ?", conn);
{
    conn.Open();
    cmd.Parameters.AddWithValue("@p1", this.tbUsername.Text);
    cmd.Parameters.AddWithValue("@p2", this.tbPassword.Text);
    using(OleDbDataReader dr = cmd.ExecuteReader())
    {
       .....
    }
}