ado是直接连接数据库的存在的路径的

解决方案 »

  1.   

    那也就是直接使用原生的ado对象了:procedure TForm1.btnConnectionClick(Sender: TObject);
    begin
      adoc := CreateOleObject('ADODB.Connection');
      // 打开连接
      adoc.Open ('Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=F:\Leewei\Books\Delphi5\Book3\Datas\Northwind.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False');
    end;
    procedure TForm1.btnOpenTableClick(Sender: TObject);
    begin
      ador := CreateOleObject('ADODB.RecordSet');
      ador.ActiveConnection := adoc;
      // 设定指令类型和内容 
      ador.Open('Select * from 客户', adoc, adOpenStatic, adLockOptimistic, adCmdText); // 执行指令
      fillData;
    end;
      

  2.   

    要使用原生的ado对象,你必须对connection对象的参数设定有很清楚的认识,否则无法正确书书写连接字符串
      

  3.   

    好像ador要先声明,请问如何声明?
      

  4.   

    自己写的一个ADO执行类,供参考
    {**************************************************************}
    {目的  用于执行对Access数据库(HR.mdb)的操作                    }
    {创建时间:2001.11.5                               }
    {**************************************************************}unit AdoLib;interface
    uses
      Classes, ADODB, Forms, Sysutils;
    type
      TAdoExecute=class
      private
        SysCn: TADOConnection;        //私有成员:数据库连接对象
        procedure OpenCn();
      public
        destructor Destroy();override;
        procedure ExecuteSQL(const SqlStr:ansistring;var ResultSet:TADODataSet);overload;
        procedure ExecuteSQL(const SqlStr:ansistring;var AffectedRows:integer);overload;
      end;implementation//目的  打开数据库连接
    procedure TAdoExecute.OpenCn();
    var
      CnString: ansistring;       //连接字符串
      ST: TObjectStates;          //连接状态
    begin
      try
        //如果对象实例不存在,则实例化
        if SysCn=nil then
        begin
          CnString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=HR.mdb';
          SysCn:=TADOConnection.Create(Application);
          SysCn.ConnectionString:=CnString;
          SysCn.LoginPrompt:=False;
          SysCn.ConnectionTimeout:=90;
          SysCn.KeepConnection:=True;
        end;
        ST:=[stOpen];
        //如果连接对象关闭,则打开连接
        if SysCn.State<>ST then
        begin
          SysCn.Connected:=True;
        end;
      except
        raise Exception.Create('数据库连接失败!');
      end;
    end;//目的  重载析构
    destructor TAdoExecute.Destroy();
    begin
      FreeAndNil(SysCn);
    end;//目的  执行SQL语句,返回结果记录集
    procedure TAdoExecute.ExecuteSQL(const SqlStr:ansistring;var ResultSet:TADODataSet);
    begin
      try
        ResultSet:=TADODataSet.Create(Application);
        Self.OpenCn();
        ResultSet.Connection:=SysCn;
        ResultSet.CommandType:=cmdText;
        ResultSet.CommandText:=SqlStr;
        ResultSet.Active:=true;
      except
        raise Exception.Create('数据库操作失败!');
      end;
    end;//目的  执行SQL语句,返回操作影响行数
    procedure TAdoExecute.ExecuteSQL(const SqlStr:ansistring;var AffectedRows:integer);
    var
      Command:TADOCommand;
    begin
      try
        Command:=TADOCommand.Create(Application);
        Self.OpenCn();
        Command.Connection:=SysCn;
        Command.CommandType:=cmdText;
        Command.CommandText:=SqlStr;
        Command.Execute(AffectedRows,'');
        SysCn.Close();
      except
        raise Exception.Create('数据库操作失败!');
      end;
    end;end.