ADO方式连接数据库--添删查修

程序界面:

程序源码:

  1 unit mydb;
  2
  3 interface
  4
  5 uses
  6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7   Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids, ADODB, ExtCtrls, DBCtrls,
  8   Mask;
  9
 10 type
 11   TForm1 = class(TForm)
 12     DBGrid1: TDBGrid;
 13     ADOConnection1: TADOConnection;
 14     ADOQuery1: TADOQuery;
 15     DataSource1: TDataSource;
 16     DBNavigator1: TDBNavigator;
 17     ADOQuery1name: TStringField;
 18     ADOQuery1age: TIntegerField;
 19     ADOQuery1address: TStringField;
 20     Button1: TButton;
 21     Edit1: TEdit;
 22     Button2: TButton;
 23     Label1: TLabel;
 24     ADOQuery1stucode: TWideStringField;
 25     ADOQuery1sex: TStringField;
 26     ADOQuery1province: TStringField;
 27     ADOQuery1phonenumber: TStringField;
 28     ComboBox1: TComboBox;
 29     Label2: TLabel;
 30     Label3: TLabel;
 31     ComboBox2: TComboBox;
 32     Panel1: TPanel;
 33     ADOQuery2: TADOQuery;
 34     Panel2: TPanel;
 35     Edit2: TEdit;
 36     Edit3: TEdit;
 37     Edit4: TEdit;
 38     Edit5: TEdit;
 39     Edit6: TEdit;
 40     Label4: TLabel;
 41     Label5: TLabel;
 42     Label6: TLabel;
 43     Label7: TLabel;
 44     Label8: TLabel;
 45     Label9: TLabel;
 46     Edit7: TEdit;
 47     Label10: TLabel;
 48     Button3: TButton;
 49     RadioGroup1: TRadioGroup;
 50     Button4: TButton;
 51     Button5: TButton;
 52     Button6: TButton;
 53     procedure Button1Click(Sender: TObject);
 54     procedure Button2Click(Sender: TObject);
 55     procedure ComboBox1DropDown(Sender: TObject);
 56     procedure ComboBox2DropDown(Sender: TObject);
 57     procedure Button3Click(Sender: TObject);
 58     procedure displayAll;
 59     procedure DBGrid1CellClick(Column: TColumn);
 60     procedure Button4Click(Sender: TObject);
 61     procedure Button5Click(Sender: TObject);
 62     procedure Button6Click(Sender: TObject);
 63
 64   private
 65     { Private declarations }
 66   public
 67     { Public declarations }
 68   end;
 69
 70 var
 71   Form1: TForm1;
 72
 73 implementation
 74
 75 {$R *.dfm}
 76
 77 procedure TForm1.Button1Click(Sender: TObject);
 78 var
 79    sqlstr:string;
 80 begin
 81   ADOQuery1.Close;
 82   ADOQuery1.SQL.Clear;
 83   sqlstr:=‘select * from student where 1=1‘;
 84   //ADOQuery1.SQL.Add(‘select * from student where  name like :name  order by stucode‘);
 85   //ADOQuery1.Parameters.ParamByName(‘name‘).Value:=‘%‘+Edit1.Text+‘%‘;
 86
 87
 88  if  Edit1.Text<>‘‘ then
 89   begin
 90     sqlstr:=sqlstr+‘ and name like ‘‘%‘+trim(Edit1.Text)+‘%‘‘ ‘;
 91   end;
 92
 93   if  ComboBox1.Text<>‘‘then
 94   begin
 95      sqlstr:=sqlstr+‘ and province=‘‘‘+trim(ComboBox1.Text)+‘‘‘‘;
 96   end;
 97
 98    if  ComboBox2.Text<>‘‘then
 99   begin
100      sqlstr:=sqlstr+‘ and address=‘‘‘+trim(ComboBox2.Text)+‘‘‘‘;
101   end;
102   ADOQuery1.SQL.Add(sqlstr+‘ order by stucode‘);
103   ADOQuery1.open;
104
105   Panel1.Caption:=‘共‘+ IntToStr(ADOQuery1.RecordCount)+‘条数据‘;
106
107
108 end;
109
110 procedure TForm1.Button2Click(Sender: TObject);
111
112 begin
113   displayAll;
114   Panel1.Caption:=‘共‘+ IntToStr(ADOQuery1.RecordCount)+‘条数据‘;
115 end;
116
117
118
119 procedure TForm1.ComboBox1DropDown(Sender: TObject);
120
121 begin
122   ComboBox1.Items.Clear;
123   ADOQuery2.Close;
124   ADOQuery2.SQL.Clear;
125   ADOQuery2.SQL.Add(‘select distinct province from student‘);
126   ADOQuery2.open;
127   while not ADOQuery2.Eof do
128   begin
129     ComboBox1.Items.Add(ADOQuery2.FieldByName(‘province‘).AsString);
130     ADOQuery2.Next;
131   end;
132 end;
133
134
135 procedure TForm1.ComboBox2DropDown(Sender: TObject);
136
137 begin
138   ComboBox2.Items.Clear;
139   ADOQuery2.Close;
140   ADOQuery2.SQL.Clear;
141   ADOQuery2.SQL.Add(‘select distinct address from student‘);
142   ADOQuery2.open;
143   while not ADOQuery2.Eof do
144   begin
145     ComboBox2.Items.Add(ADOQuery2.FieldByName(‘address‘).AsString);
146     ADOQuery2.Next;
147   end;
148 end;
149
150 procedure TForm1.Button3Click(Sender: TObject);
151
152 begin
153 //ShowMessage(IntToStr(RadioGroup1.ItemIndex));
154 //ShowMessage(RadioGroup1.Items[RadioGroup1.ItemIndex]);
155
156   ADOQuery1.Close;
157   ADOQuery1.SQL.Clear;
158   ADOQuery1.SQL.Add(‘insert into student (stucode,name,sex,age,province,address,phonenumber) values(:stucode,:name,:sex,:age,:province,:address,:phonenumber)‘);
159   ADOQuery1.Parameters.ParamByName(‘stucode‘).Value:=Trim(Edit2.Text);
160   ADOQuery1.Parameters.ParamByName(‘name‘).Value:=Trim(Edit3.Text);
161   ADOQuery1.Parameters.ParamByName(‘sex‘).Value:=Trim(RadioGroup1.Items[RadioGroup1.ItemIndex]);
162   ADOQuery1.Parameters.ParamByName(‘age‘).Value:=Trim(Edit4.Text);
163   ADOQuery1.Parameters.ParamByName(‘province‘).Value:=Trim(Edit5.Text);
164   ADOQuery1.Parameters.ParamByName(‘address‘).Value:=Trim(Edit6.Text);
165   ADOQuery1.Parameters.ParamByName(‘phonenumber‘).Value:=Trim(Edit7.Text);
166   ADOQuery1.ExecSQL;
167   //ShowMessage(‘保存成功!‘);
168   displayAll;     //显示所有记录
169   Button6.Click;
170 end;
171
172 procedure TForm1.displayAll;
173 begin
174   ADOQuery1.Close;
175   ADOQuery1.SQL.Clear;
176   ADOQuery1.SQL.Add(‘select * from student order by stucode‘);
177   ADOQuery1.open;
178 end;
179
180 procedure TForm1.DBGrid1CellClick(Column: TColumn);
181 begin
182   // s:=query1.fieldbyname(‘name‘).asstring;
183  //ShowMessage(ADOQuery1.fieldbyname(‘stucode‘).asstring);
184
185   //ShowMessage(adoquery1.fieldbyname(‘name‘).AsString);
186   Edit2.Text:=ADOQuery1.fieldbyname(‘stucode‘).AsString;
187   Edit3.Text:=ADOQuery1.fieldbyname(‘name‘).AsString;
188   if Trim(ADOQuery1.fieldbyname(‘sex‘).AsString)=‘男‘ then
189       RadioGroup1.ItemIndex:=0
190    else
191       RadioGroup1.ItemIndex:=1;
192
193   Edit4.Text:=ADOQuery1.fieldbyname(‘age‘).AsString;
194   Edit5.Text:=ADOQuery1.fieldbyname(‘province‘).AsString;
195   Edit6.Text:=ADOQuery1.fieldbyname(‘address‘).AsString;
196   Edit7.Text:=ADOQuery1.fieldbyname(‘phonenumber‘).AsString;
197   Edit2.Enabled:=False;
198 end;
199
200 procedure TForm1.Button4Click(Sender: TObject);
201 begin
202   ADOQuery1.Close;
203   ADOQuery1.SQL.Clear;
204   ADOQuery1.SQL.Add(‘update student set name=:name ,sex=:sex,age=:age,province=:province,address=:address,phonenumber=:phonenumber  where stucode=:stucode‘);
205   ADOQuery1.Parameters.ParamByName(‘name‘).Value:=Trim(Edit3.Text);
206   ADOQuery1.Parameters.ParamByName(‘sex‘).Value:=Trim(RadioGroup1.Items[RadioGroup1.ItemIndex]);
207   ADOQuery1.Parameters.ParamByName(‘age‘).Value:=Trim(Edit4.Text);
208   ADOQuery1.Parameters.ParamByName(‘province‘).Value:=Trim(Edit5.Text);
209   ADOQuery1.Parameters.ParamByName(‘address‘).Value:=Trim(Edit6.Text);
210   ADOQuery1.Parameters.ParamByName(‘phonenumber‘).Value:=Trim(Edit7.Text);
211   ADOQuery1.Parameters.ParamByName(‘stucode‘).Value:=Trim(Edit2.Text);
212   ADOQuery1.ExecSQL;
213   //ShowMessage(‘修改成功!‘);
214   displayAll;     //显示所有记录
215
216 end;
217
218 procedure TForm1.Button5Click(Sender: TObject);
219 begin
220   DBGrid1.SelectedRows.Delete;
221 end;
222
223 procedure TForm1.Button6Click(Sender: TObject);
224 begin
225  Edit2.Text:=‘‘;
226  Edit3.Text:=‘‘;
227  Edit4.Text:=‘‘;
228  Edit5.Text:=‘‘;
229  Edit6.Text:=‘‘;
230  Edit7.Text:=‘‘;
231
232 end;
233
234 end.

代码分析:

(1)、组合查询,拼接SQL 语句

 1 procedure TForm1.Button1Click(Sender: TObject);
 2 var
 3    sqlstr:string;
 4 begin
 5   ADOQuery1.Close;
 6   ADOQuery1.SQL.Clear;
 7   sqlstr:=‘select * from student where 1=1‘;
 8   //ADOQuery1.SQL.Add(‘select * from student where  name like :name  order by stucode‘);
 9   //ADOQuery1.Parameters.ParamByName(‘name‘).Value:=‘%‘+Edit1.Text+‘%‘;
10
11
12  if  Edit1.Text<>‘‘ then
13   begin
14     sqlstr:=sqlstr+‘ and name like ‘‘%‘+trim(Edit1.Text)+‘%‘‘ ‘;
15   end;
16
17   if  ComboBox1.Text<>‘‘then
18   begin
19      sqlstr:=sqlstr+‘ and province=‘‘‘+trim(ComboBox1.Text)+‘‘‘‘;
20   end;
21
22    if  ComboBox2.Text<>‘‘then
23   begin
24      sqlstr:=sqlstr+‘ and address=‘‘‘+trim(ComboBox2.Text)+‘‘‘‘;
25   end;
26   ADOQuery1.SQL.Add(sqlstr+‘ order by stucode‘);
27   ADOQuery1.open;
28
29   Panel1.Caption:=‘共‘+ IntToStr(ADOQuery1.RecordCount)+‘条数据‘;
30
31
32 end;

(2)、当 ComboBox 发生 DropDown 事件时,把数据库中数据 显示在 ComboBox 列表中

procedure TForm1.ComboBox1DropDown(Sender: TObject);

begin
  ComboBox1.Items.Clear;
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add(‘select distinct province from student‘);
  ADOQuery2.open;
  while not ADOQuery2.Eof do
  begin
    ComboBox1.Items.Add(ADOQuery2.FieldByName(‘province‘).AsString);
    ADOQuery2.Next;
  end;
end;

(3)、把表单中的数据保存在数据库中

 1 procedure TForm1.Button3Click(Sender: TObject);
 2
 3 begin
 4 //ShowMessage(IntToStr(RadioGroup1.ItemIndex));
 5 //ShowMessage(RadioGroup1.Items[RadioGroup1.ItemIndex]);
 6
 7   ADOQuery1.Close;
 8   ADOQuery1.SQL.Clear;
 9   ADOQuery1.SQL.Add(‘insert into student (stucode,name,sex,age,province,address,phonenumber)       values(:stucode,:name,:sex,:age,:province,:address,:phonenumber)‘);
10   ADOQuery1.Parameters.ParamByName(‘stucode‘).Value:=Trim(Edit2.Text);
11   ADOQuery1.Parameters.ParamByName(‘name‘).Value:=Trim(Edit3.Text);
12   ADOQuery1.Parameters.ParamByName(‘sex‘).Value:=Trim(RadioGroup1.Items[RadioGroup1.ItemIndex]);
13   ADOQuery1.Parameters.ParamByName(‘age‘).Value:=Trim(Edit4.Text);
14   ADOQuery1.Parameters.ParamByName(‘province‘).Value:=Trim(Edit5.Text);
15   ADOQuery1.Parameters.ParamByName(‘address‘).Value:=Trim(Edit6.Text);
16   ADOQuery1.Parameters.ParamByName(‘phonenumber‘).Value:=Trim(Edit7.Text);
17   ADOQuery1.ExecSQL;
18
19   displayAll;     //显示所有记录
20   Button6.Click;
21 end;

(4)、当单击 DBGrid1 中的某条数据时,在修改表项中显示数据

 1 procedure TForm1.DBGrid1CellClick(Column: TColumn);
 2 begin
 3   // s:=query1.fieldbyname(‘name‘).asstring;
 4  //ShowMessage(ADOQuery1.fieldbyname(‘stucode‘).asstring);
 5
 6   //ShowMessage(adoquery1.fieldbyname(‘name‘).AsString);
 7   Edit2.Text:=ADOQuery1.fieldbyname(‘stucode‘).AsString;
 8   Edit3.Text:=ADOQuery1.fieldbyname(‘name‘).AsString;
 9   if Trim(ADOQuery1.fieldbyname(‘sex‘).AsString)=‘男‘ then
10       RadioGroup1.ItemIndex:=0
11    else
12       RadioGroup1.ItemIndex:=1;
13
14   Edit4.Text:=ADOQuery1.fieldbyname(‘age‘).AsString;
15   Edit5.Text:=ADOQuery1.fieldbyname(‘province‘).AsString;
16   Edit6.Text:=ADOQuery1.fieldbyname(‘address‘).AsString;
17   Edit7.Text:=ADOQuery1.fieldbyname(‘phonenumber‘).AsString;
18   Edit2.Enabled:=False;
19 end;

(5)、修改数据并保存

 1 procedure TForm1.Button4Click(Sender: TObject);
 2 begin
 3   ADOQuery1.Close;
 4   ADOQuery1.SQL.Clear;
 5   ADOQuery1.SQL.Add(‘update student set name=:name ,sex=:sex,age=:age,province=:province,address=:address,phonenumber=:phonenumber  where stucode=:stucode‘);
 6   ADOQuery1.Parameters.ParamByName(‘name‘).Value:=Trim(Edit3.Text);
 7   ADOQuery1.Parameters.ParamByName(‘sex‘).Value:=Trim(RadioGroup1.Items[RadioGroup1.ItemIndex]);
 8   ADOQuery1.Parameters.ParamByName(‘age‘).Value:=Trim(Edit4.Text);
 9   ADOQuery1.Parameters.ParamByName(‘province‘).Value:=Trim(Edit5.Text);
10   ADOQuery1.Parameters.ParamByName(‘address‘).Value:=Trim(Edit6.Text);
11   ADOQuery1.Parameters.ParamByName(‘phonenumber‘).Value:=Trim(Edit7.Text);
12   ADOQuery1.Parameters.ParamByName(‘stucode‘).Value:=Trim(Edit2.Text);
13   ADOQuery1.ExecSQL;
14   //ShowMessage(‘修改成功!‘);
15   displayAll;     //显示所有记录
16
17 end;
时间: 2024-08-25 13:11:40

ADO方式连接数据库--添删查修的相关文章

第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform)让用户方便的操作数据库中的数据. 什么是ADO.NET 是一组库类,System.Data. Ado.net组成 Connection:用来连接数据库 Command:用来执行SQL语句 DataReader:只读.只进的结果集,一条一条读取数据(SteamReader.XmlReader) Da

MFC用ADO方式连接数据库,断线重连的问题,如何恢复数据库链接

采用的方式是用定时器不断查询数据库连接状态, void CSqlDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if(nIDEvent==TIMER_SQL) { //检查SQL m_bSql=CMakeSureSql::Check(g_Connection); //这里的全局的CAdoConnection* if(!m_bSql) { CMakeSureS

通过ADO方式连接数据库

首先你正确安装了MySQL的数据库驱动程序(mysql-connector-odbc-5.1.6-win32.msi )或者64位的 本地连接: 1.在桌面上新建一个空的文本文件mysql.txt,重命名为mysql.udl: 2.双击这个mysql.udl文件,打开“数据库连接属性”对话框,在“提供程序”页选择”Micrsoft Ole DB Provider for ODBC Drivers“, 点击下一步: 3.在“连接”页的,"指定数据源"选择"使用连接字符串&quo

C++ ADO方式连接mysql数据库

对于软件开发其实说白了就是在不停地和数据打交道, 所以数据库的操作是必不可少的, 接下来介绍VC开发中利用ADO建立ODBC数据源来访问MySQL数据库. 从我接触的数据库编程方式来说, 我觉得在vc开发连接数据库是比较难的, 也是很容易出错. 在android中, 系统自带sqlite数据库,只需要使用SQLiteOpenHelper抽象类即可完成与数据库的操作. 在java中, 使用jdbc连接mysql数据库, 下载相应jar调用相应接口,传入数据库类型与用户名密码进行数据库的操作. 但是

ado.net连接数据库的用法

一.简单介绍ADO.NET System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint System.Data.Common(各种数据访问类的基类和接口):DataColumnMapping,DataTableMapping System.Data.SqlClient(对Sql Server进行操作的数据访问类): 1)SqlConnection:数据库连接器 2)SqlCommand:数据库命名对象 3)Sq

【springmvc+mybatis项目实战】杰信商贸-30.出口报运增删查修mapper+Dao+Service+Controller

我们接下来做我们项目的下一个环节,就是出口报运的业务,首先我们来看看两个设计方式 a)大型项目设计方式 传统设计方式,基于对象关联,数据量小时,系统无碍:当数据随着系统的使用,线性增长,系统变的越来越慢,到达一定数据量时,性能急剧下降. b)新的设计方式:打断设计 在表中增加一个字段,这个字段用来存储关联表的主键集合:在报运业务中要查询合同下的货物信息.直接通过这个关联字段,利用in子查询直接去查询货物表,这样查询效率提高很多.而且数据量越大,查询效率越高.这种方式,业务关联层级越多,这种设计方

Python+Django+SAE系列教程13-----MySQL记录的添\删\改

建立了数据库后,我们就来做一个简单的表(person_classroom)的添加.删除.修改的操作. 首先我们建立一个添加的页面的模板Classroom_Add.html(添加的表单)并把它放在Bidding\templates\person中: Classroom_Add.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>数据库操作

win7 64 VC++ ado方式连接access 连接字符串

运行环境:win7 64       vc++6.0       office 2007  32位(access 2007) 我用的是ado方式连接access数据库,(现在的Win7系统中安装的一般都是32位的Office,因为微软推荐使用32位的Office,兼容性更强,稳定性更好.access文件是.mdb(2003格式,会提示没有jet访问组件) .accdb(2007格式)),因此需要安装AccessDatabaseEngine_X64.exe驱动,安装时会提示先卸载office再安装

如何使用纯Java方式连接数据库?

假定需要连接的数据库名称为`myschool`,使用"root"登录,密码为"0000",使用该数据库用户登录并访问`myschool`数据库. 在写代码之前需要导入jar包"mysql-connector-java-5.1.0-bin" 1.使用纯Java方式连接数据库查找数据(为方便查阅,暂使用throws抛出异常,省略记录日志). package cn.jbdc;import java.sql.Connection;import java.