[英]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.