4

我只想检查表是否存在,然后创建一个查询来访问 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不完整?

4

0 回答 0