unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls,Unit3;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    DBGrid1: TDBGrid;
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
var
stu:stuDao;
begin
      stu:=stuDao.Create();
      dbgrid1.DataSource:=stu.queryAll;
end;

end.
//****************************************
unit Unit2;
//数据连接层
interface
  uses
      SysUtils,Dialogs,Classes,DB,ADODB;

type
    TConnDb=class    //数据库连接类

    private
        conn:TADOConnection;
    public
        adoQuery:TADOQuery;
        constructor Create();  //构造方法
        function getAdoQuery():TAdoQuery;  //取得已连数据库的ADOQuery对象
end;

//===============================================================================

type
   TDbHande=class  //SQL语句执行类

   private
       conn:TConnDb;
   public
       //adoQuery:TADOQuery;
       constructor Create(); //构造方法
       function queryDb(sql:String):TADOQuery; //执行查询语句的方法
       procedure upDateDb(sql:String);         //执行增,删,改的方法


end;

implementation

constructor TConnDb.Create();
var
   str:WideString; //接收数据库连接字符串
begin
    str:='Provider=Microsoft.Jet.OLEDB.4.0;';
    str:=str+'User ID=Admin;';
    str:=str+'Data Source=db1.mdb;';
    str:=str+'Mode=Share Deny None;Extended Properties="";';
    str:=str+'Jet OLEDB:System database="";';
    str:=str+'Jet OLEDB:Registry Path="";';
    str:=str+'Jet OLEDB:Database Password="";';
    str:=str+'Jet OLEDB:Engine Type=5;';
    str:=str+'Jet OLEDB:Database Locking Mode=1;';
    str:=str+'Jet OLEDB:Global Partial Bulk Ops=2;';
    str:=str+'Jet OLEDB:Global Bulk Transactions=1;';
    str:=str+'Jet OLEDB:New Database Password="";';
    str:=str+'Jet OLEDB:Create System Database=False;';
    str:=str+'Jet OLEDB:Encrypt Database=False;';
    str:=str+'Jet OLEDB:Don'+''''+'t Copy Locale on Compact=False;';
    str:=str+'Jet OLEDB:Compact Without Replica Repair=False;';
    str:=str+'Jet OLEDB:SFP=False';

    conn:=TADOConnection.Create(nil);
    conn.ConnectionString:=str;
    conn.LoginPrompt:=false;
end;

function TConnDb.getAdoQuery():TADOQuery; //返回已连接Connection组件的ADOQUERY
begin

    adoQuery:=TADOQuery.Create(nil);

    adoQuery.Connection:=conn;           //conn已连接数据库
    result:=adoQuery;
end;

//==============================================================================

constructor TDbHande.Create();
begin    
    conn:=TConnDb.Create();//构造函数初始化连接数据库
end;

function TDbHande.queryDb(sql:String):TADOQuery;
var
    adoQuery:TADOQuery;
begin
    adoQuery:=conn.getAdoQuery();       //接收已连数据库的ADOQUERY组件
    adoQuery.Close;
    adoQuery.SQL.Clear;
    adoQuery.SQL.Add(sql);
    adoQuery.Open;
    result:=adoQuery;                  //返回经过操作的结果集
end;


procedure  TDbHande.upDateDb(sql:String);
var
   adoQuery:TADOQuery;
begin

   adoQuery:=conn.getAdoQuery();      //接收已连数据库的ADOQUERY组件
   adoQuery.Close;
   adoQuery.SQL.Clear;
   adoQuery.SQL.Add(sql);
   adoQuery.ExecSQL;
end;

end.

//************************
unit Unit3;
// 数据操作
interface
uses
        SysUtils,Dialogs,Classes,DB,ADODB,Unit2;
type
        stuDao=class
            private
               dbHande:TDbHande;  //定义连接数据库对象
            public
                constructor Create();   //构造方法
                procedure query();
                procedure delete();
                //procedure insert();
                //procedure update();
                function  queryAll():TDataSource;

end;

implementation
constructor stuDao.Create();
begin
    dbHande:=TDbHande.Create;
end;

procedure  stuDao.query();
var
sql:String;
begin
    sql:='select * from stu';
    dbHande.queryDb(sql);
end;

procedure  stuDao.delete();
var
sql:string;
begin
   sql:='delete from stu where name = aa ';
   dbHande.upDateDb(sql);
end;

function  stuDao.queryAll():TDataSource;
var
sql:string;
ds:TDataSource;
begin
   ds:=TDataSource.Create(nil);
   sql:='select * from stu';
   ds.DataSet:=dbHande.queryDb(sql);
   result:=ds;

end;
end.