delphi7操作数据库之Access
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实例1
系统登录对话框
系统统登录对话框(如图1-1 所示)是一般的数据库管理系统的基本功能之一,用于提供系统用户登录身份验证功能,只有成功登录之后才能启动和使用系统,从而保证系统数据安全。
系统登录对话框用两个文本框分别输入用户名和
登录口令,按钮用于执行用户名和登录口令验证,按钮用于退出登录。
图1-1 系统登录对话框
Eenter键替代Tab键
ADO Connection对象
ADO Recordset对象
在动手设计“系统登录对话框”前,先来对该实例进行一些分析,以便理清思路,掌握一般数据库管理系统登录对话框设计的基本方法。
系统登录对话框主要有以下特点:
(1)界面简单。
对话框中只需要使用标签显示文本框提示,用文本框来输入用户名和登录口令,用命令按钮执行用户和密码的验证以及系统的退出。
(2)基于数据库验证。
一般数据库管理系统登录对话框在实现时都将用户登录信息(用户名和登录口令)保存在数据库中,这样便于管理系统用户,与直接将用户登录信息放在代码中更有灵活性。
一般数据库管理系统登录对话框有以下有两种基本方法:
【方法1】在数据库中建立一个数据表用于保存系统用户登录基本信息,在设计登录对话框时通过查询该数据表完
成验证。
该方法具有一般性。
【方法2】对于一些支持安全验证的数据库管理系统,如Microsoft SQL Server、
Microsoft Access,可以将系统用户定义为数据库用户。
在设计登录对话框时,使用用户输入的用户名和登录口令来连接数据库,让数据库管理系统自己完成验证。
本实例采用方法一来实现,在实现时还增加了限制登录次数功能,用户每次最多允许5 次验证操作,当用户登录成功后将保存用户登录的时间和登录系统的次数,这样便于对用户的综合管理。
1.ADO Connection对象
ADO Connection对象代表了打开的、与数据源的连接,在访问数据源之前,必须先建立连接。
本实例中用到的ADO Connection对象属性和方法分别如下:
2.ConnectionString属性:指定连接数据源的基本信息,本实例使用ADO访问保存登录信息的Access 数据库,使用的连接字符串为:“Provider=Microsoft.Jet.OLEDB.
3.51;Data Source=E:\精彩范例\\01\db\db01.mdb”。
-9-
第 1篇简单应用篇
² Open方法:打开数据源连接。
² Close方法:关闭数据源连接。
3.ADO Recordset对象
ADO Recordset 对象用于保存从数据源获得记录集,本实例中用到的属性、集合和方法分别如下:
ActiveConnection 属性:代表数据源的活动连接,通常将其设置为已建立的
Connection对象。
EOF属性:测试当前记录位置是否位于记录集的最后一个记录之后。
如果当前记
录位于记录集的最后一个记录之后EOF属性将返回True,否则返回False。
Fields 集合:包含Recordset 对象的所有Field 对象,即可使用Fields 来获得当前记录各个字段的值。
例如,objRs.Fields("口令").Value获得当前记录的“口令”字段的值。
Open 方法:用于打开记录集,其参数为执行查询的SQL 命令字符串,如:objRs.Open("SELECT 口令FROM 系统用户WHERE 用户名='admin'")
本实例的实现包括创建数据库、设计表单、建立ADO引用和编写功能代码三个步骤。
1.创建数据库
本实例中用于实现登录验证的数据保存在Access 数据库中,该数据库用MicrosoftOffice 办公软件的Microsoft Access工具创建,其具体操作步骤如下:
(1)启动Microsoft Access,打开可视化数据管理器,如图1-2所示。
图1-2
点文件/新建/在右侧出现的新建文件任务下选择“空数据库”,弹出保存位置对话框,这时我们选择存到我们程序的目录下就行了,如:桌面/delphi数库库实例/db01.mdb,然后出现如下图1-3
(2)创建表
图1-3
选中左边的“表”,再点上面的“设计”,就弹出了表设置的视图,我们建立如图1-4的表:
图1-4
创建“用户表”结构,添加了字段后的“表结构”对话框如图1-4 所示。
在“表结构”对话框的“字段列表”显示了该表的字段,并允许修改字段的名称、顺序位置、验证文本、验证规则、缺省值、是否零长度、是否为必要字段等。
表1-1 “系统用户”表结构
字段定义如下:
字段名类型长度
ID 自动编号20
USERNAME 文本20
USERPASS 整型
TIMES
LASTTIME 日期/时间
单击按钮,打开保存数据库表对话框,在对话框中输入数据库表的名称T_USER,然后单击按钮对设计的T_USER数据库表进行保存,如图1-5所示。
图1-5
(3)添加数据记录。
在设计完成T_SUER数据库表后,如图1-7所示的对话框中,选中T_USER数据表,单击按钮打开T_USER表,在表中添加数据记录,如图1-6 所示。
图1-6
完成上述操作后,我们创建了一个名为“db01”的Access数据库,数据库中包含一个名为“T_USER”的数据表,数据表中包含了两条记录,记录1的“USERNAME”字段值为admin,“USERPASS”字段值为adminpass
记录2的“USERNAME”字段值为abc,“USERPASS”字段值为123。
2.设计窗体
Delphi为可视化的程序设计语言,其应用程序界面就是窗体,而窗体设计主要通过鼠标拖放操作完成。
本实例中的系统登录对话框窗体实现,窗体中需用标签控件显示各输入框提示,用文本框输入用户名和口令,用命令按钮提交验证或退出登录,其具体设计步骤
如下:
(1)启动Delphi
选择Windows“开始”菜单中的“程序”/“Borland Delphi7/Delphi7.0”命令,启动Delphi 7.0,如图
程序启动后,自动为我们创建好了窗体文件,我们对这个窗体的大小做一定调整,然后添加两个如下控件。
确保打开了对象窗口,即运行程序时的主窗口。
设置窗体的相关属性,在属性窗口中设置Caption属性为“系统登录”,Name 属性为“Login_form”,同时也可设置其他的属性。
创建的登录窗体如图1-8 所示。
窗体属性和控件属性设置如表所示,窗体文件保存为login.pas。
工程文件保存名为默认Project1.dpr。
图1-8
控件名属性属性值
Caption 系统登录Form1
Position poScreenCenter Label1 Caption 用户名
Label2 Caption 密码
Edit1 Text 空
Text 空
Edit2
PasswordChar * Button1 Caption 确定
Button2 Caption 取消
ADOQuery1
3.建立ADO 引用
要在Delohi7 工程中使用ADO对象来访问数据库,必须在窗体中建立ADO对象,其
操作步骤如下:
(1)添加数据连接源
选择工具栏的“ADO”选项,单击按钮,再在窗体上放置按下鼠标左键放置一个ADOQuery连接对象。
(2)对ADOQuery对象进行数据库连接。
选中ADOQuery对象,然后单击属性的Connection String属性按钮打开如图1-9所示的对话框。
图1-9
(3)选择数据连接方式
在如图1-9所示的对话框中选择“Use Connection String”,然后单击“创建”按钮打开如图1-10所示的对话框。
图1-10
(4)选择数据库类型
在如图1-10所示的对话框中选择“Microsoft Jet 4.0 OLE DB Provider”选项,然后单击“下一步”按钮打开如
图1-11所示的对话框。
1-11
注:这一步点击“…”按扭,选择我们前面建立好的数据库文件db01.mdb。
然后请删除db01.mdb前的路径,这样就是用相对路径,通用性更强。
然后点“测试连接”,提示测试成功。
1-12
4.编写功能代码
具体的登录验证包括以下功能:
◇取消登录功能
用户单击“取消”按钮时,显示如图1-13所示的对话框询问用户是否真的退出登录,若用户单击对话框中的按
钮,则结束应用程序,退出登录;若单击按钮则继续执行登录操作。
1-13
◇执行登录验证
用户单击“确定”按钮时,根据用户输入的用户名和口令执行登录验证。
首先检验本次验证是否超过允许的最多验证次数,若超过则直接退出登录,否则进一步验证用户名和口令的正确性。
根据用户名和口令是否正确、是否正常完成验证过程给出相应的提示信息。
编写功能代码的具体操作步骤如下:
(1)系统初始化
在窗体创建时需要对全局变量进行初始化,初始登录的最多次数以及登录的次数。
具
体代码如下:
在窗体上双击,弹出窗体的Create事件,代码如下procedure TLogin_Form1.FormCreate(Sender: TObject);
begin
maxtimes:=3; //设置充许输入错误的最大次数
logintimes:=0; //统计用户使用过系统的次数
end;
注意,在这段代码上面,就是{$R *.dfm}之前,要先定议这两个变量:
maxtimes,logintimes:integer;
做好的代码如下图:
(2)实现退出窗体功能。
①双击“取消”按钮,在代码窗口中添加按钮的单击事件过程
代码。
Procedure TLogin_Form1.Button2Click(Sender: TObject);
begin
close;
end;
②为了完成退出时弹出对话框,还必须对该窗口的OnClose 事件进行代码编程。
具体代码如下:
procedure TLogin_Form1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if MessageDlg('你选择了系统退出,退出将不能启动管理系统,是否真的退出?',mtConfirmation,[mbYes, mbNo], 0) = mrYes THEN //系统对话框
ACTION:=caFree //如果单击是按钮,则退出系统登录
ELSE
ACTION:=caNone; //如果单击否按钮,则继续系统登录end;
③实现登录功能
procedure TLogin_Form1.Button1Click(Sender: TObject);
var
lasttime,aname,apass,sqlstr:string; //定义四个字符串变量aname和apass分别用来存放用户输入的用户名和密码,sqltr用来存放查询语句
begin
inc(logintimes);
if logintimes>maxtimes then //如果登陆次数logintimes大于允许的最大次数maxtimes时
begin
showmessage('你已经超过充许验证次数!,将退出登录系统!');
application.Terminate; //终止应用程序执行end
else
begin
if (length(trim(edit1.Text))>0) or (length(trim(edit2.Text))>0) then
begin
aname:=trim(edit1.Text); //取得用户输入的用户名
apass:=trim(edit2.Text); //取得用户输入的密码
sqlstr:='select * from t_user where (username='''+aname+''') and(userpass='''+apass+''')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.Open; //执行SQL语句查询
if ADOQuery1.RecordCount>0 then //如果得到
的记录大于0条,说明找到满足条件的记录,说明用户名密码成功
begin //验证通过后,更新用户的登陆时间和登陆次数
lasttime:=DateTimeToSTR(date);
sqlstr:='update t_user set times=times+1,lasttime='''+lasttime+''' where (username='''+aname+''')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlstr);
ADOQuery1.ExecSQL; //执行SQL语句更新
showmessage('登陆成功!');
end
else
begin
showmessage('请确认登录的用户名和密码是否正确!');
edit1.SetFocus; //取得输入焦点
edit1.SelectAll; //选择文本框中的所有内容
end
end
end
end;
5.保存工程、测试运行
具体操作步骤如下:
(1)保存窗体文件
文件/保存,打开“文件另存为”对话框,如图1-18 所示,该对话框用于保存窗体。
在“保存在”下拉列表框中选择窗体保存位置,在“文件名”文本框中输入窗体文件名,最后单击按钮保存窗体。
(2)保持工程文件
窗体保存之后,将打开“工程另存为”对话框,如图所示。
在“保存在”下拉列表框中选择窗体保存位置,在“文件名”文本框中输入
工程文件名,最后单击按钮。
保存工程。
(3)测试应用程序
保存工程后,单击工具栏中的按钮,或按F9键运行工程,测试工程是否正确运行。
在编写代码的过程中也需要通过运行工程来测试当前代码是否正确。
注意:本例中数据库文件必须保存在工程目录下。
如图:
本例的主要任务是创建一个基于数据库的系统登录对话框,其实现过程包括创建保存登录信息的Access数据库、设计窗体、编程功能代码和保存工程及测试运行等步骤。
在实现本例时,用了ADO对象来访问Access数据库,首先用Connection对象建立数据库连接,然后用RecordSet 对象从数据库获得用户口令,从而验证用户登录信息是否正确。
这里需要特别提醒,若你用Microsoft Access 2000或Microsoft Access 2003创建登录信息数据库,则Connection 对象连接字符串中的驱动程序(Provider)应用Microsoft.Jet.OLEDB.4.0,否则将无法识别数据库格式。
本教程原创:李荣辉QQ:185225745 欢迎大家加入我的QQ 群一起学习delphi. 群号:29200817。