本文由lrhok贡献
实例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 篇简单应用篇 2 Open 方法:打开数据源连接。 2 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 USERNAME USERPASS TIMES LASTTIME
类型 自动编号 文本 整型
长度 20 20
日期/时间
单击按钮,打开保存数据库表对话框,在对话框中输入数据 库表的名称 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
控件名 Form1 Label1 Label2 Edit1 Edit2 Button1 Button2 ADOQuery1 属性 Caption Position Caption Caption Text Text PasswordChar Caption Caption 属性值 系统登录 poScreenCenter 用户名 密码 空 空 * 确定 取消
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,[mbY
es, 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 times=times+1,lasttime='''+lasttime+''' (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; t_user set where
5.保存工程、测试运行 具体操作步骤如下: (1)保存窗体文件 文件/保存,打开“文件另存为”对话框,如图 1-18 所示,该 对话框用于保存窗体。 “保存在” 在 下拉列表框中选择窗体保存位置, 在“文件名”文本框中输入窗体文
件名,最后单击按钮保存窗体。
(2)保持工程文件 窗体保存之后, 将打开 “工程另存为” 对话框, 如图所示。 “保 在 存在”下拉列表框中选择窗体保存位置,在“文件名”文本框中输入 工程文件名,最后单击按钮。保存工程。
(3)测试应用程序 保存工程后,单击工具栏中的 按钮,或按 F9 键运行工程,测试textbox控件边框设置
工程是否正确运行。 在编写代码的过程中也需要通过运行工程来测试 当前代码是否正确。 注意:本例中数据库文件必须保存在工程目录下。如图:
本例的主要任务是创建一个基于数据库的系统登录对话框, 其实 现过程包括创建保存登录信息的 Access 数据库、设计窗体、编程功 能代码和保存工程及测试运行等步骤。在实现本例时,用了 ADO 对象 来访问 Access 数据库,首先用 Connection 对象建立数据库连接,然 后用 RecordSet 对象从数据库获得用户口令,从而验证用户登录信 息是否正确。这里需要特别提醒,若你用 Microsoft Access 2000 或 Microsoft Access 2003 创建登录信息数据库,则 Connection 对象 连 接 字 符 串 中 的 驱 动 程 序 ( Provider ) 应 用 Microsoft.Jet.OLEDB.4.0,否则将无法识别数据库格式。 本教程原创:李荣辉 QQ:185225745 欢迎大家加入我的 QQ 一 起学习 delphi.
号:29200817
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论