德尔福:使用参数
问题描述:
我想使用MySQL使用Delphi中Select Into Outfile
命令SELECT INTO OUTFILE:德尔福:使用参数
dirfile:=pathProg+SaveDialog1.FileName+'.csv';
With dm.Query
do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM tabel1 INTO OUTFILE :parfile';
Parameters.ParamByName('parfile').value:=dirfile;
ExecSQL;
end;
但它不能正常工作,它返回一个eror:
你有在您的SQL语法错误检查手册,对应于您的mariadb服务器版本的权利syntakx使用附近
有没有什么建议来解决这个问题?
答
经过四处搜索,结果证明你不能不能使用参数化的值为文件名,它必须是字符串文字。在这种情况下,您将不得不手动建立SQL字符串,例如:
dirfile:=pathProg+SaveDialog1.FileName+'.csv';
with dm.Query do
begin
SQL.Text := 'SELECT * FROM tabel1 INTO OUTFILE ' + QuotedStr(dirfile);
ExecSQL;
end;
+0
哇....它的工作...谢谢你.... –
+2
接受答案,如果它的作品 – Fero
我可以找到的'INTO OUTFILE'的所有示例都使用硬编码的文件名字符串。你确定输入参数在这里有效吗?不仅如此,我可以为'INTO OUTFILE'找到的所有文档都说输出文件是在DB服务器上创建的,并且'FILE'权限需要使用'INTO OUTFILE'。你有这种权限吗?除非客户端和服务器位于同一台计算机上,否则指定客户端应用程序本地的路径不会有效。 –
如果我将参数更改为文件名字符串'Select * from table1 INTO OUTFILE“D:\ file1.csv”'它工作正常。我认为问题是使用参数...除了使用参数之外,有没有任何选项? –