请问,不用数据控件,在一个窗体中怎样避免重复连接数据库,例如:
unit login;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ADODB, Grids, DBGrids, DB, ComCtrls;type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
ListBox2: TListBox;
ComboBox1: TComboBox;
Button2: TButton;
ListView1: TListView;
ComboBox2: TComboBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Button3: TButton;
Button4: TButton;
ComboBox3: TComboBox;
Label4: TLabel;
ComboBox4: TComboBox;
ComboBox5: TComboBox;
Edit3: TEdit;
Edit4: TEdit;
ComboBox6: TComboBox;
Edit5: TEdit;
ComboBox7: TComboBox;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ExeRoot: String;
DataFile: String;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
ADOQuery1: TADOQuery;
i: Integer;
path:string;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb'; ////////////////第1次连接
ADOQuery1:=TADOQuery.Create(self);
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from users ');
ADOQuery1.Open;
//ADOQuery1.Active:=True;
listbox1.Clear;//清空列表框内容
for i:=1 to ADOQuery1.RecordCount do
begin
listbox1.Items.Add(ADOQuery1.FieldByName('name').Asstring);
ADOQuery1.next;
end;
ADOQuery1.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ADOQuery1: TADOQuery;
i: Integer;
path:string;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb';////////////////第2次连接
ADOQuery1:=TADOQuery.Create(self);
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from users ');
ADOQuery1.Open;
//ADOQuery1.Active:=True;
for i:=1 to ADOQuery1.RecordCount do //向列表框插入内容
begin
listbox2.Items.Add(ADOQuery1.FieldByName('name').Asstring);
ADOQuery1.next;
end;
ADOQuery1.first; //指针指到记录集第一个
for i:=1 to ADOQuery1.RecordCount do //向下拉框1插入内容
begin
ComboBox1.Items.Add(ADOQuery1.FieldByName('name').Asstring);
ADOQuery1.next;
end;
ADOQuery1.Free;
ComboBox2.Items.Add('男'); //向下拉框2插入内容
ComboBox2.Items.Add('女');
ComboBox3.Items.Add('化验'); //向下拉框3插入内容
ComboBox3.Items.Add('检验');
ComboBox4.Items.Add('男'); //向下拉框4插入内容
ComboBox4.Items.Add('女');
ComboBox5.Items.Add('化验'); //向下拉框5插入内容
ComboBox5.Items.Add('检验');
end;procedure TForm1.Button2Click(Sender: TObject); //查寻
var
ADOQuery2: TADOQuery;
path:string;
Item: TListItem;
i: Integer;
str:string;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb';////////////////第3次连接
ADOQuery2:=TADOQuery.Create(self);
ADOQuery2.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery2.SQL.Clear;
str:='select * from users where 1=1';
if ComboBox1.Text<>'' then str:=str+' and name=''' + ComboBox1.Text+'''';
if ComboBox2.Text<>'' then str:=str+' and sex=''' + ComboBox2.Text+'''';
if Edit1.Text<>'' then str:=str+' and age='''+Edit1.Text+'''';
if ComboBox3.Text<>'' then str:=str+' and gw=''' + ComboBox3.Text+'''';
messagedlg(str,mterror,[mbok],1);
ADOQuery2.SQL.Add(str);
ADOQuery2.Open;
messagedlg('姓名<'+ADOQuery2.FieldByName('name').Asstring+'>ID<'+ADOQuery2.FieldByName('id').Asstring+'>性别<'+ADOQuery2.FieldByName('sex').Asstring+'>',mterror,[mbok],1);
listview1.Items.Clear;
ADOQuery2.first; //指针指到记录集第一个
for i:=0 to ADOQuery2.RecordCount-1 do
begin
item:=listview1.Items.Add;
item.Caption:=ADOQuery2.Fields[0].value ;
item.SubItems.Add(ADOQuery2.Fields[1].value);
item.SubItems.Add(ADOQuery2.Fields[2].value);
item.SubItems.Add(ADOQuery2.Fields[3].value);
item.SubItems.Add(ADOQuery2.Fields[4].value);
ADOQuery2.Next;
end;
ADOQuery2.Free;
ComboBox1.Text:='';
ComboBox2.Text:='';
Edit1.Text:='';
ComboBox3.Text:='';
end;
procedure TForm1.Button3Click(Sender: TObject); //添加
var
ADOQuery3: TADOQuery;
path:string;
i:Integer;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb';////////////////第4次连接
ADOQuery3:=TADOQuery.Create(self);
ADOQuery3.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('insert into users(name,sex,age,gw)values(:xm,:xb,:nl,:gw)');
ADOQuery3.parameters.ParamByName('xm').Value :=trim(Edit2.text);
ADOQuery3.parameters.ParamByName('xb').Value :=trim(ComboBox4.Text);
ADOQuery3.parameters.ParamByName('nl').Value :=trim(edit3.text);
ADOQuery3.parameters.ParamByName('gw').Value :=trim(ComboBox5.Text);
ADOQuery3.execsql;
showmessage('成功添加新用户!'); ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('select * from users ');
ADOQuery3.Open;
for i:=1 to ADOQuery3.RecordCount do //向列表框插入内容
begin
listbox2.Items.Add(ADOQuery3.FieldByName('name').Asstring);
ADOQuery3.next;
end;
ADOQuery3.first; //指针指到记录集第一个
for i:=1 to ADOQuery3.RecordCount do //向下拉框1插入内容
begin
ComboBox1.Items.Add(ADOQuery3.FieldByName('name').Asstring);
ADOQuery3.next;
end;
ADOQuery3.Free;
end;procedure TForm1.Button5Click(Sender: TObject);
var
ADOQuery3: TADOQuery;
path:string;
i:Integer;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb';////////////////第5次连接
ADOQuery3:=TADOQuery.Create(self);
ADOQuery3.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('select * from users');
ADOQuery3.Open;
for i:=1 to ADOQuery3.RecordCount do //向列表框插入内容
begin
listbox2.Items.Add(ADOQuery3.FieldByName('name').Asstring);
ADOQuery3.next;
end;
ADOQuery3.first; //指针指到记录集第一个
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('delete from users where id=:recid');
ADOQuery3.parameters.ParamByName('recid').Value:=listbox2.Items.Values;
ADOQuery3.execsql;
//showmessage('成功删除新用户!');
messagedlg('id:<'+listbox2.Items.Text+'>',mterror,[mbok],1);
ADOQuery3.Free;
end;end.
unit login;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ADODB, Grids, DBGrids, DB, ComCtrls;type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
ListBox2: TListBox;
ComboBox1: TComboBox;
Button2: TButton;
ListView1: TListView;
ComboBox2: TComboBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Button3: TButton;
Button4: TButton;
ComboBox3: TComboBox;
Label4: TLabel;
ComboBox4: TComboBox;
ComboBox5: TComboBox;
Edit3: TEdit;
Edit4: TEdit;
ComboBox6: TComboBox;
Edit5: TEdit;
ComboBox7: TComboBox;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ExeRoot: String;
DataFile: String;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
ADOQuery1: TADOQuery;
i: Integer;
path:string;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb'; ////////////////第1次连接
ADOQuery1:=TADOQuery.Create(self);
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from users ');
ADOQuery1.Open;
//ADOQuery1.Active:=True;
listbox1.Clear;//清空列表框内容
for i:=1 to ADOQuery1.RecordCount do
begin
listbox1.Items.Add(ADOQuery1.FieldByName('name').Asstring);
ADOQuery1.next;
end;
ADOQuery1.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ADOQuery1: TADOQuery;
i: Integer;
path:string;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb';////////////////第2次连接
ADOQuery1:=TADOQuery.Create(self);
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from users ');
ADOQuery1.Open;
//ADOQuery1.Active:=True;
for i:=1 to ADOQuery1.RecordCount do //向列表框插入内容
begin
listbox2.Items.Add(ADOQuery1.FieldByName('name').Asstring);
ADOQuery1.next;
end;
ADOQuery1.first; //指针指到记录集第一个
for i:=1 to ADOQuery1.RecordCount do //向下拉框1插入内容
begin
ComboBox1.Items.Add(ADOQuery1.FieldByName('name').Asstring);
ADOQuery1.next;
end;
ADOQuery1.Free;
ComboBox2.Items.Add('男'); //向下拉框2插入内容
ComboBox2.Items.Add('女');
ComboBox3.Items.Add('化验'); //向下拉框3插入内容
ComboBox3.Items.Add('检验');
ComboBox4.Items.Add('男'); //向下拉框4插入内容
ComboBox4.Items.Add('女');
ComboBox5.Items.Add('化验'); //向下拉框5插入内容
ComboBox5.Items.Add('检验');
end;procedure TForm1.Button2Click(Sender: TObject); //查寻
var
ADOQuery2: TADOQuery;
path:string;
Item: TListItem;
i: Integer;
str:string;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb';////////////////第3次连接
ADOQuery2:=TADOQuery.Create(self);
ADOQuery2.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery2.SQL.Clear;
str:='select * from users where 1=1';
if ComboBox1.Text<>'' then str:=str+' and name=''' + ComboBox1.Text+'''';
if ComboBox2.Text<>'' then str:=str+' and sex=''' + ComboBox2.Text+'''';
if Edit1.Text<>'' then str:=str+' and age='''+Edit1.Text+'''';
if ComboBox3.Text<>'' then str:=str+' and gw=''' + ComboBox3.Text+'''';
messagedlg(str,mterror,[mbok],1);
ADOQuery2.SQL.Add(str);
ADOQuery2.Open;
messagedlg('姓名<'+ADOQuery2.FieldByName('name').Asstring+'>ID<'+ADOQuery2.FieldByName('id').Asstring+'>性别<'+ADOQuery2.FieldByName('sex').Asstring+'>',mterror,[mbok],1);
listview1.Items.Clear;
ADOQuery2.first; //指针指到记录集第一个
for i:=0 to ADOQuery2.RecordCount-1 do
begin
item:=listview1.Items.Add;
item.Caption:=ADOQuery2.Fields[0].value ;
item.SubItems.Add(ADOQuery2.Fields[1].value);
item.SubItems.Add(ADOQuery2.Fields[2].value);
item.SubItems.Add(ADOQuery2.Fields[3].value);
item.SubItems.Add(ADOQuery2.Fields[4].value);
ADOQuery2.Next;
end;
ADOQuery2.Free;
ComboBox1.Text:='';
ComboBox2.Text:='';
Edit1.Text:='';
ComboBox3.Text:='';
end;
procedure TForm1.Button3Click(Sender: TObject); //添加
var
ADOQuery3: TADOQuery;
path:string;
i:Integer;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb';////////////////第4次连接
ADOQuery3:=TADOQuery.Create(self);
ADOQuery3.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('insert into users(name,sex,age,gw)values(:xm,:xb,:nl,:gw)');
ADOQuery3.parameters.ParamByName('xm').Value :=trim(Edit2.text);
ADOQuery3.parameters.ParamByName('xb').Value :=trim(ComboBox4.Text);
ADOQuery3.parameters.ParamByName('nl').Value :=trim(edit3.text);
ADOQuery3.parameters.ParamByName('gw').Value :=trim(ComboBox5.Text);
ADOQuery3.execsql;
showmessage('成功添加新用户!'); ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('select * from users ');
ADOQuery3.Open;
for i:=1 to ADOQuery3.RecordCount do //向列表框插入内容
begin
listbox2.Items.Add(ADOQuery3.FieldByName('name').Asstring);
ADOQuery3.next;
end;
ADOQuery3.first; //指针指到记录集第一个
for i:=1 to ADOQuery3.RecordCount do //向下拉框1插入内容
begin
ComboBox1.Items.Add(ADOQuery3.FieldByName('name').Asstring);
ADOQuery3.next;
end;
ADOQuery3.Free;
end;procedure TForm1.Button5Click(Sender: TObject);
var
ADOQuery3: TADOQuery;
path:string;
i:Integer;
begin
path:=extractfilepath(application.ExeName)+'data\db.mdb';////////////////第5次连接
ADOQuery3:=TADOQuery.Create(self);
ADOQuery3.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('select * from users');
ADOQuery3.Open;
for i:=1 to ADOQuery3.RecordCount do //向列表框插入内容
begin
listbox2.Items.Add(ADOQuery3.FieldByName('name').Asstring);
ADOQuery3.next;
end;
ADOQuery3.first; //指针指到记录集第一个
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('delete from users where id=:recid');
ADOQuery3.parameters.ParamByName('recid').Value:=listbox2.Items.Values;
ADOQuery3.execsql;
//showmessage('成功删除新用户!');
messagedlg('id:<'+listbox2.Items.Text+'>',mterror,[mbok],1);
ADOQuery3.Free;
end;end.
QQ:56280213
注明,delphi。