【问题标题】:how to deal with this kind of error如何处理这种错误
【发布时间】:2015-03-22 10:30:27
【问题描述】:

我收到了这种错误:

附加信息:查询表达式'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)
{
    ....

【问题讨论】:

  • 该错误也为您提供了我们所拥有的所有信息,因此请开始解释它。
  • 另外,一个不相关的问题,但你在Insuffiecient 中有一个错字(原文如此)。

标签: c# ms-access


【解决方案1】:

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

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

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

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

您没有将某些TextBox 输入的实际值放入查询中,而是将标签Text 值(其中包含字符串no.)。

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

sql = "SELECT * FROM Acc_info WHERE account_no = " + txtaccno.Text;

另外请记住,您的代码非常容易发生 sql 注入。如果恶意用户将0; DELETE FROM Acc_info; 之类的内容放入您的TextBox,您将遇到问题...... 要防止这些攻击,您可以使用parameterized queries

【讨论】:

    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2016-11-01
    • 2021-05-11
    • 1970-01-01
    • 2012-01-11
    • 2023-01-06
    相关资源
    最近更新 更多