繁体   English   中英

MSAccess SQL参数太少。 预期4

[英]MSAccess SQL Too few parameters. Expected 4

我正在使用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引发了带有消息'[AnyDAC] [Phys] [ODBC] [Microsoft] [ODBC Microsoft Access Driver]的异常类EMSAccessNativeException参数太少。 预期4.'。

SQL和Delphi都使用单引号作为字符串边界。 既然你想有字符串燎报价,你要“逃跑”,它使用doube单引号。

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

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

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

函数QuotedStr将注意并在字符串中将所有单引号引起来加倍。 这对于避免插入hack也很重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM