saa*_*stn 8 delphi ms-access query-parameters query-string
我正在从.mdb文件(MSAccess 2000格式)中读取数据.有些桌子的名字中有冒号.当我尝试在这些表上打开查询时,我收到异常:
EOleException with message 'Parameter object is improperly defined. Inconsistent or incomplete information was provided'.
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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;
Run Code Online (Sandbox Code Playgroud)
TQuery将解释: ifParamCheck = 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;
Run Code Online (Sandbox Code Playgroud)
现在它有效.
组合克隆的表/列名称和参数
如果您绝对必须沿着使用表中包含冒号的表/列名称的路径,并且仍然希望在查询中的其他位置使用params,那么您可以使用宏来填充表/列名称.
这需要FireDac.我建议你对此非常小心,因为不像参数宏不能安全地防止SQL注入!
请参阅:http: //docwiki.embarcadero.com/CodeExamples/Seattle/en/FireDAC.TFDQuery.Macros_Sample
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |