如何处理这种错误

时间:2015-03-22 10:30:27

标签: c# ms-access

我收到了这种错误:

  

其他信息:查询表达式中的语法错误(缺少运算符)' acount no = no。,'

......每次我撤回或存放一些东西

string sql = default(string);
DataTable Log_in = new DataTable();

con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\anaabenoja\Documents\sample connection.accdb";
sql = "SELECT * FROM Acc_info where  account_no = " + lblaccno.Text + "";

cmd.Connection = con;
cmd.CommandText = sql;
da.SelectCommand = cmd;
**da.Fill(Log_in);**
if (Log_in.Rows.Count > 0)
{
    ....

1 个答案:

答案 0 :(得分:0)

错误消息绝对可以满足您的需求:

  

附加信息:查询表达式'acount no = no。,'

中的语法错误(缺少运算符)

如果查看您的查询,您会发现错误:

sql = "SELECT * FROM Acc_info where  account_no = " + lblaccno.Text + "";

您不会将某些TextBox输入的实际值放入查询中,而是将Text - 标签的值(包含字符串{ {1}})。

因此,如果您按如下方式更改查询,它应该有效(假设您有一个TextBox txtaccno ):

no.

另外请记住,您的代码非常倾向于SQL注入。如果恶意用户将类似sql = "SELECT * FROM Acc_info WHERE account_no = " + txtaccno.Text; 的内容放入TextBox中,则会出现问题... 要防止这些攻击,您可以使用parameterized queries

enter image description here