我只想检查表是否存在,然后创建一个查询来访问 INFORMATION_SCHEMA.TABLES,代码如下,但它不起作用!收到“对象已打开”的错误。
procedure TForm2.Button11Click(Sender: TObject);
begin
ADOConnection1.Close;
ADOConnection1.ConnectionString:=
'Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;'
+ 'Data Source=' + SdfFileName + ';';
ADOConnection1.Open;
ADOQuery1.Close;
ADOQuery1.SQL.Text:= 'SELECT * FROM INFORMATION_SCHEMA.TABLES';
ADOQuery1.Open;
if not ADOQuery1.IsEmpty then
ShowMessage(ADOQuery1.Fields[0].AsString);
end;
但是,使用“COM”的方式,它工作正常!像这样的代码:
var
Conn, Cmd, RS: OleVariant;
begin
Conn:= CreateOleObject('ADODB.Connection');
Cmd:= CreateOleObject('ADODB.Command');
Conn.Open('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;'
+ 'Data Source=' + SdfFileName + ';');
Cmd.ActiveConnection:= Conn;
Cmd.CommandText:= 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES';
RS:= Cmd.Execute;
if not RS.Eof then
ShowMessage(RS.Fields[0].Value);
end;
为什么?Delphi封装的ADO不完整?