我有使用mydac存储过程组件的Delphi应用程序,它将utf8编码的xml文件的内容作为字符串参数。 当我将这个xml内容从文件复制粘贴到像
这样的过程时,它适用于navicat和其他数据库管理程序CALL sp_saveit('<xml>garry's<otherdata> data data....</xml>);
但是当我尝试从delphi调用它时会抛出错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CALL sp_saveit('<?xml version=\"1.0\" encoding="UTF-8"?><Main><Detail z') at line 1
遵循这些步骤:
MyStream.LoadFromFile(Sp_xmlfile);
T_ContentsSP.ParamByName('XmlFile').AsWideString := MyStream.DataString;
此外,我试图用delphi的zlib压缩这些数据并发送为blob,我试图用{更改'
,但结果是相同的。
如何将带有单引号和双引号的长字符串作为sp的参数发送到delphi?
p.s:对不起我的英语。
答案 0 :(得分:1)
在您的帖子中,我看到您尝试使用常量值(I put this xml content copy-paste
)和参数(T_ContentsSP.ParamByName('XmlFile')
)。此外,尝试显示您使用的命令的错误文本,而不是其他命令。
使用参数时,无需做任何特殊准备。数据访问组件透明地将参数值发送到DBMS。如果它们具有跟踪输出,则检查跟踪,哪个库正在发送到DBMS。参数用法总是优先考虑文字用法!
当你使用常数时,你应该(more):
'
将成为\''
。