admin

MSAccess SQL参数太少。预期4

sql

我正在使用Delphi XE2和AnyDAC和一个MSAccess数据库。

表“ timea”具有5个字段:

Rec_No AutoNumber
应用程序文本
User_ID文本
PW文本
注释备注

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

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

项目PWB.exe引发了带有消息’[AnyDAC] [Phys] [ODBC] [Microsoft] [ODBC Microsoft Access
Driver]的异常类EMSAccessNativeException。参数太少。预期4.’。


阅读 172

收藏
2021-06-07

共1个答案

admin

SQL和Delphi都使用单引号作为字符串边界。既然你想有烧灼引号 的字符串,你要“逃跑”使用doube单引号吧。

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

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

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

函数QuotedStrwll会小心并且将字符串中的所有单引号引起来加倍。这对于避免插入黑客攻击也是必不可少的。

2021-06-07