delphi7操作数据库之Access

  • 格式:doc
  • 大小:771.00 KB
  • 文档页数:22

实例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 自动编号20USERNAME 文本20USERPASS 整型TIMESLASTTIME 日期/时间单击按钮,打开保存数据库表对话框,在对话框中输入数据库表的名称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 系统登录Form1Position poScreenCenter Label1 Caption 用户名Label2 Caption 密码Edit1 Text 空Text 空Edit2PasswordChar * Button1 Caption 确定Button2 Caption 取消ADOQuery13.建立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-124.编写功能代码具体的登录验证包括以下功能:◇取消登录功能用户单击“取消”按钮时,显示如图1-13所示的对话框询问用户是否真的退出登录,若用户单击对话框中的按钮,则结束应用程序,退出登录;若单击按钮则继续执行登录操作。

1-13◇执行登录验证用户单击“确定”按钮时,根据用户输入的用户名和口令执行登录验证。

首先检验本次验证是否超过允许的最多验证次数,若超过则直接退出登录,否则进一步验证用户名和口令的正确性。

根据用户名和口令是否正确、是否正常完成验证过程给出相应的提示信息。

编写功能代码的具体操作步骤如下:(1)系统初始化在窗体创建时需要对全局变量进行初始化,初始登录的最多次数以及登录的次数。

具体代码如下:在窗体上双击,弹出窗体的Create事件,代码如下procedure TLogin_Form1.FormCreate(Sender: TObject);beginmaxtimes:=3; //设置充许输入错误的最大次数logintimes:=0; //统计用户使用过系统的次数end;注意,在这段代码上面,就是{$R *.dfm}之前,要先定议这两个变量:maxtimes,logintimes:integer;做好的代码如下图:(2)实现退出窗体功能。

①双击“取消”按钮,在代码窗口中添加按钮的单击事件过程代码。

Procedure TLogin_Form1.Button2Click(Sender: TObject);beginclose;end;②为了完成退出时弹出对话框,还必须对该窗口的OnClose 事件进行代码编程。

具体代码如下:procedure TLogin_Form1.FormClose(Sender: TObject; var Action: TCloseAction);beginif MessageDlg('你选择了系统退出,退出将不能启动管理系统,是否真的退出?',mtConfirmation,[mbYes, mbNo], 0) = mrYes THEN //系统对话框ACTION:=caFree //如果单击是按钮,则退出系统登录ELSEACTION:=caNone; //如果单击否按钮,则继续系统登录end;③实现登录功能procedure TLogin_Form1.Button1Click(Sender: TObject);varlasttime,aname,apass,sqlstr:string; //定义四个字符串变量aname和apass分别用来存放用户输入的用户名和密码,sqltr用来存放查询语句begininc(logintimes);if logintimes>maxtimes then //如果登陆次数logintimes大于允许的最大次数maxtimes时beginshowmessage('你已经超过充许验证次数!,将退出登录系统!');application.Terminate; //终止应用程序执行endelsebeginif (length(trim(edit1.Text))>0) or (length(trim(edit2.Text))>0) thenbeginaname:=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('登陆成功!');endelsebeginshowmessage('请确认登录的用户名和密码是否正确!');edit1.SetFocus; //取得输入焦点edit1.SelectAll; //选择文本框中的所有内容endendendend;5.保存工程、测试运行具体操作步骤如下:(1)保存窗体文件文件/保存,打开“文件另存为”对话框,如图1-18 所示,该对话框用于保存窗体。