DSP

Delphi用ADO操作数据库完整示例(转)

2019-07-13 17:58发布

来源:http://hi.baidu.com/wh445306/blog/item/5de832f3659dfc54342acc63.html Delphi用ADO操作数据库完整示例(原创)2007-12-28 15:42 unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, RzDBGrid, ExtCtrls, RzPanel,
ComCtrls, RzBckgnd, RzButton, Buttons, RzCmboBx; type
TForm1 = class(TForm)
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    Label1: TLabel;
    RzGroupBox1: TRzGroupBox;
    RzDBGrid1: TRzDBGrid;
    RzGroupBox2: TRzGroupBox;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    Label5: TLabel;
    Edit4: TEdit;
    Label6: TLabel;
    Edit5: TEdit;
    RzSeparator1: TRzSeparator;
    StatusBar1: TStatusBar;
    SpeedButton1: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    RzGroupBox3: TRzGroupBox;
    RzComboBox1: TRzComboBox;
    Edit6: TEdit;
    RzButton1: TRzButton;
    Label7: TLabel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure ShowData;           //记得在此位置加入自定义过程的申明
    procedure Edit6Click(Sender: TObject);
    procedure RzButton1Click(Sender: TObject);
    procedure RzComboBox1Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
private
    { Private declarations }
   
public
    { Public declarations }
end; var
   Form1:   TForm1; implementation
{$R *.dfm}
procedure TForm1.ShowData;   //自定义过程      如果用DBEdit控件绑定字段就不用这样,
   begin
     Edit1.Text:=ADOQuery1.Fields[0].Value;
     Edit2.Text:=ADOQuery1.Fields[1].Value;
     Edit3.Text:=ADOQuery1.Fields[5].Value;
     edit4.Text:=ADOQuery1.Fields[3].Value;
     edit5.Text:=ADOQuery1.Fields[4].Value;    end; procedure TForm1.FormCreate(Sender: TObject);
var
    sqlstr:string;
begin
sqlstr:='select * from abc';                     //数据库连接字符串,打开数据库表,初始化查询
with ADOQuery1 do
begin
    ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
     +ExtractFilepath(Application.ExeName)+
     'a.MDB;Persist Security Info=True';
    SQL.Clear;
    SQL.Add(sqlstr);
    Open;
end;
ShowData;
StatusBar1.Panels.Items[1].Text:='当前数据库中共有'+''+IntToStr(Form1.ADOQuery1.Recordcount)+''+'条记录';
StatusBar1.Panels.Items[0].Text:='准备就绪!';
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);          //第一条
begin
ADOQuery1.First;
ShowData;
end; procedure TForm1.SpeedButton3Click(Sender: TObject);         //上一条
begin
ADOQuery1.Prior;
ShowData;
end; procedure TForm1.SpeedButton4Click(Sender: TObject);        //下一条
begin
ADOQuery1.Next;
ShowData;
end; procedure TForm1.SpeedButton2Click(Sender: TObject);        //最后一条
begin
ADOQuery1.Last;
ShowData;
end;
procedure TForm1.Edit6Click(Sender: TObject);              //简单判断后激活查询按钮
begin
if RzComboBox1.Text<>'请选择查询字段'then
    begin
      RzButton1.Enabled:=True;
    end
else
    exit;
end;
procedure TForm1.RzButton1Click(Sender: TObject);         //查询按钮处理过程
var
    s:string;
begin    if (RzComboBox1.Text='根据工号查询')and (Edit6.Text<>'') then
     begin
       s:='Select * from abc where sCardID like''%'+Edit6.Text+'%''';
     end;    if (RzComboBox1.Text='根据姓名查询')and (Edit6.Text<>'') then
     begin
       s:='Select * from abc where sName like''%'+Edit6.Text+'%''';
     end;    if (RzComboBox1.Text='根据身份证号码查询')and (Edit6.Text<>'') then
     begin
       s:='Select * from abc where sID like''%'+Edit6.Text+'%''';
     end; if (RzComboBox1.Text='根据地址查询')and (Edit6.Text<>'') then
    begin
      s:='Select * from abc where sAddress like''%'+Edit6.Text+'%''';
      //showmessage (s);
    end; with ADOQuery1 do
     begin
     try                     //此处加入错误捕获处理机制
       SQL.Clear;
       SQL.Add(s);
       open;
     except
       MessageBox(Handle,'您选择的查询字段跟输入的值不匹配,请检查后重新输入!'
      +#13+'"例如您选择了根据身份证号码查询就只能在文本框中输入数字,而不能输入字符串"'
      ,'警告信息',MB_ICONEXCLAMATION);
     end;
ShowData;
StatusBar1.Panels.Items[1].Text:='此次查询共有'+''+IntToStr(Form1.ADOQuery1.Recordcount)+''+'条符合条件的记录';
end;
end;
procedure TForm1.RzComboBox1Click(Sender: TObject);
begin
Edit6.Text:='';
end; procedure TForm1.SpeedButton5Click(Sender: TObject);         //添加空行
begin
with ADOQuery1 do
begin
    Append;
end;
end; procedure TForm1.SpeedButton6Click(Sender: TObject);       //保存所有记录,
begin
with ADOQuery1 do
begin
    edit;
    post;
end;
end; procedure TForm1.SpeedButton7Click(Sender: TObject);       //删除记录
begin
ADOQuery1.Delete;
end; procedure TForm1.Timer1Timer(Sender: TObject);              //状态栏显示时间
begin
StatusBar1.Panels.Items[3].Text:=DateTimeToStr(Now);
end; end.