delphi7操作数据库之Access.doc_第1页
delphi7操作数据库之Access.doc_第2页
delphi7操作数据库之Access.doc_第3页
delphi7操作数据库之Access.doc_第4页
delphi7操作数据库之Access.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实例1系统登录对话框系统统登录对话框(如图1-1 所示)是一般的数据库管理系统的基本功能之一,用于提供系统用户登录身份验证功能,只有成功登录之后才能启动和使用系统,从而保证系统数据安全。系统登录对话框用两个文本框分别输入用户名和登录口令, 按钮用于执行用户名和登录口令验证, 按钮用于退出登录。图1-1 系统登录对话框: Eenter键替代Tab键: ADO Connection对象: ADO Recordset对象在动手设计“系统登录对话框”前,先来对该实例进行一些分析,以便理清思路,掌握一般数据库管理系统登录对话框设计的基本方法。系统登录对话框主要有以下特点:(1)界面简单。对话框中只需要使用标签显示文本框提示,用文本框来输入用户名和登录口令,用命令按钮执行用户和密码的验证以及系统的退出。(2)基于数据库验证。一般数据库管理系统登录对话框在实现时都将用户登录信息(用户名和登录口令)保存在数据库中,这样便于管理系统用户,与直接将用户登录信息放在代码中更有灵活性。一般数据库管理系统登录对话框有以下有两种基本方法:【方法1】在数据库中建立一个数据表用于保存系统用户登录基本信息,在设计登录对话框时通过查询该数据表完成验证。该方法具有一般性。【方法2】对于一些支持安全验证的数据库管理系统,如Microsoft SQL Server、Microsoft Access,可以将系统用户定义为数据库用户。在设计登录对话框时,使用用户输入的用户名和登录口令来连接数据库,让数据库管理系统自己完成验证。本实例采用方法一来实现,在实现时还增加了限制登录次数功能,用户每次最多允许5 次验证操作,当用户登录成功后将保存用户登录的时间和登录系统的次数,这样便于对用户的综合管理。1ADO Connection对象ADO Connection对象代表了打开的、与数据源的连接,在访问数据源之前,必须先建立连接。本实例中用到的ADO Connection对象属性和方法分别如下:2.ConnectionString属性:指定连接数据源的基本信息,本实例使用ADO访问保存登录信息的Access 数据库, 使用的连接字符串为:“Provider=Microsoft.Jet.OLEDB.3.51;Data Source=E:精彩范例01dbdb01.mdb”。-9-第 1篇简单应用篇 Open方法:打开数据源连接。 Close方法:关闭数据源连接。3ADO 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文本20 USERPASS整型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控件名属性属性值Form1Caption系统登录PositionpoScreenCenterLabel1Caption用户名Label2Caption密码Edit1Text空Edit2Text空PasswordChar*Button1Caption确定Button2Caption取消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 /如果单击是按钮,则退出系统登录ELSE ACTION:=caNone; /如果单击否按钮,则继续系统登录end;实现登录功能procedure TLogin_Form1.Button1Click(Sender: TObject);var lasttime,aname,apass,sqlstr:string; /定义四个字符串变量 aname和apass分别用来存放用户输入的用户名和密码 ,sqltr用来存放查询语句begin inc(logintimes); if logintimesmaxtimes 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.RecordCount0 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 endend;5保存工程、测试运行具体操作步骤如下:(1)保存窗体文件文件/保存,打开“文件另存为”对话框,如图1-18 所示,该对话框用于保存窗体。在“保存在”下拉列表框中选择窗体保存位置,在“文件名”文本框中输入窗体文件名,最后单击按钮保存窗体。(2)保持工程文件窗体保存之后,将打开“工程另存为”对话框,如图所示。在“保存在”下拉列表框中选择窗体保存位置,在“文件名”文本框中输入工程文件名,最后单击按钮。保存工程。(3)测试应用程序保存工程后,单击工具栏中的按钮,或按F9键运行工程,测试工程是否正确运行。在编写代码的过程中也需要通过运行工程来测试当前代码是否正确。注意:本例中数据库文件必须保存在工程目录下。如图: 本例的主要任务是创建一个基于数据库的系统登录对话框,其实现过程包括创建保存登录信息的Access数据库、设计窗体、编程功能代码和保存工程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论