MS Access SQL参数太少。预计4

时间:2014-08-18 00:18:28

标签: sql delphi ms-access anydac

我使用Delphi XE2和AnyDAC以及MSAccess数据库。

表' timea'有5个字段:

  

Rec_No自动编号
  应用文字
  User_ID文本
  PW文字
  评论备忘录

此代码抛出以下错误。该查询在Access查询设计器中工作正常。

sql := 'INSERT INTO [timea] (App, User_ID, PW, Comment) VALUES ("zoo", "Bill", "mi7", "Liger");';
adconnection1.ExecSQL(sql);

项目PWB.exe引发异常类EMSAccessNativeException并显示消息' [AnyDAC] [Phys] [ODBC] [Microsoft] [ODBC Microsoft Access Driver]参数太少。预计4。'。

1 个答案:

答案 0 :(得分:0)

SQL和Delphi都使用单引号作为字符串边界。既然你想在字符串中输入,那么你必须"转义"它使用doube单引号。

例如,如果你写S := 'Guns''N''Roses',变量S将包含字符串Guns'N'Roses - 12个字符,而不是14个。

连接字符串值时要小心,因为它们也可能包含单引号。在这种情况下编写查询的推荐方法是,例如:

sql := 'INSERT INTO Table (Col) VALUES (' + QuotedStr(Val) + ')';

函数QuotedStr将小心并将字符串中的所有单引号加倍。这对于避免插入黑客也很重要。