gpt4 book ai didi

delphi - 如何在名称中带有冒号的表上运行查询?

转载 作者:行者123 更新时间:2023-12-03 14:46:44 35 4
gpt4 key购买 nike

我正在从 .mdb 文件(MSAccess 2000 格式)读取数据。有些表的名称中带有冒号。当我尝试在这些表上打开查询时遇到异常:

EOleException with message 'Parameter object is improperly defined. Inconsistent or incomplete information was provided'.

这是我的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
Query: TADOQuery;
begin
Query := TADOQuery.Create(nil);
Query.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source=DB.mdb;Persist Security Info=False';
Query.SQL.Text := 'select * from [Table1:1]';
try
Query.Open;
finally
Query.Free;
end;
end;

最佳答案

TQuery 将解释 : if ParamCheck = true .
设置ParamCheck:= false,然后设置SQL.Text

procedure TForm1.Button1Click(Sender: TObject);
var
Query: TADOQuery;
begin
Query := TADOQuery.Create(nil);
Query.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source=DB.mdb;Persist Security Info=False';
Query.ParamCheck:= false;
Query.SQL.Text := 'select * from [Table1:1]';
try
Query.Open;
finally
Query.Free;
end;
end;

现在可以了。

组合带冒号的表/列名称和参数
如果您绝对必须沿着使用带有冒号的表/列名称的路径,并且仍然想在查询中的其他地方使用参数,那么您可以使用宏来填充表/列名称。
但这需要 FireDac。我确实建议您对此非常小心,因为与参数宏不同,对于 SQL 注入(inject)并不安全!

参见:http://docwiki.embarcadero.com/CodeExamples/Seattle/en/FireDAC.TFDQuery.Macros_Sample

关于delphi - 如何在名称中带有冒号的表上运行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36957188/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com