红皮书再总结——实例一
红皮书是Visual Basic 6.0数据库开发经典实例精解的简称,这本书是我们学习vb与数据库的基础。
首先给大家介绍一下数据库连接的三种方式:
一、使用ADO connection对象,通过编写代码访问数据库。(如例一、例五)
二、使用ADO Data 控件快速创建数据库连接,不用编写代码即可访问数据库。(例三、例四)
三、使用数据环境设计器(ODBC数据源)创建数据库连接,不用编写代码即可访问数据库。(例二)
#实例1 “系统登录”对话框
(一)制作特点:
第一、界面简单。对话框中使用标签和文本框来显示和输入用户名和口令,用命令按钮执行验证和退出。
第二、基于数据库验证。将用户名和口令存放在数据库中,这样便于管理系统用户,与直接将用户登录信息放在代码中更具有灵活性。
(二)设计分析:
方法一、在数据库中建立一个数据表用于保存系统用户登录信息,在设计登录对话框时通过查询该数据表完成验证。
方法二、对于支持安全验证的数据库管理系统,可将系统用户定义为数据库用户。
(三)技术要领:
1.默认按钮和取消按钮
默认按钮,设置按钮的Default属性为True,此时其他命令按钮的该属性自动设置为False。按Enter键即可选择(激活它的单击事件),任何其他有焦点的控件都不接受Enter键的键盘事件,除非另外一个命令按钮已获得焦点,此时按Enter键选择有焦点的命令按钮而不是默认命令按钮。
取消按钮,设置控件的Cancel属性为True,此时其他命令按钮的该属性自动设置为False。单击它,或按Esc键或在该按钮获得焦点时按Enter键来选择它。
2.ADO Connection 对象
在访问数据库前,必须建立此连接。
3.ADO Recordset 对象
4.自定义函数过程
Function 函数名(参数 1 AS 数据类型,参数 2 AS 数据类型……)AS数据类型
……
函数名=返回值
……
End Function
注意:如果没有对函数过程指定返回值,则过程将返回一个默认值;数值函数返回0,字符串函数返回一个零长度字符串(""),Variant函数返回Empty。
(四)操作过程:
(1)创建数据库:
外接程序——可视化数据管理器——文件——新建——Microsoft Access——Version 7.0MDB
(2)设计窗体
两个标签框+两个文本框+两个命令按钮
(3)建立ADO引用
工程——引用——Microsoft ActiveX Data Objects 2.5 Library
(4)编写代码
① Const MaxLogTimes As Integer = 3 '定义允许用户验证登录信息的最多次数
const与Dim相同,都是定义用的,Dim是定义变量,Const是定义常量。也就是说Const定义的不能修改MaxLogTimes的值,dim定义的可以重新赋值,拿这个例子来说,如下:
Const MaxLogTimes As Integer = 3 '缺省情况下,const是私有的相当于 Private Const MaxLogTimes As Integer = 3,此时3已被赋值给登陆次数,不可修改。
dim MaxLogTimes As Integer
MaxLogTimes = 3 '用dim定义可修改MaxLogTimes的值。
②intResult:
例中代码如下:
Private Sub cmdCancel_Click()Dim intResult As Integer '请求用户确认是否真的退出系统intResult = MsgBox("你选择了退出系统登录,退出将不能启动管理系统!" & vbCrLf & "是否真的退出?", vbYesNo, "登录验证")If intResult = vbYes Then End '根据用户选择结束应用程序
End Sub
个人认为,intResult是一个赋值的中间量,如果 intResult=vbYes,则End。
**③vbCrLf:**个字符串常数,即"Chr(13) & Chr(10)"(回车符与换行符连接在一起),是换行的意思。
④Function过程:
例中代码如下:
Private Function Check_PassWord(ByVal UserName As String, ByVal PassWord As String) As ByteOn Error GoTo gpErrorDim objCn As New ADODB.Connection, objRs As New Recordset, strCn As String Dim strSQL As String '建立数据库连接objCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & "C:\Users\TXG\Desktop\实例1.mdb" objCn.Open '执行查询命令,获得用户登录口令strSQL = "SELECT 口令 FROM 系统用户 WHERE 用户名='" & UserName & "'" Set objRs.ActiveConnection = objCnobjRs.Open (strSQL) '判断有无查询结果If objRs.EOF ThenCheck_PassWord = 0 '没有查询结果,表示该用户为非法用户Else '检查口令是否正确If PassWord <> Trim(objRs.Fields("口令").Value) ThenCheck_PassWord = 1 '口令不正确ElseCheck_PassWord = 2 '口令正确End IfEnd If '关闭数据库连接,释放对象objCn.CloseSet objRs = NothingSet objCn = NothingExit Function
gpError:Check_PassWord = 255 '验证无法正常完成,返回错误代码Set objRs = NothingSet objCn = Nothing
End Function
Function 过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。
**⑤vbCritical:**叉号
(五)连接数据库方式:
第一种,使用ADO connection对象。
使用ADO对象来访问Access数据库,首先用Connection对象建立数据库连接,然后用RecordSet对象从数据库获得用户口令,从而验证用户登录信息是否正确。
红皮书再总结——实例一相关推荐
- 红皮书再总结——实例四
实例4 分页显示记录 (一)制作特点: 第一.利用记录集的分页特性进行记录分页 第二.使用DataGrid控件的数据绑定功能显示分页后的记录 (二)设计分析: 显示当前记录页数据有两种方法: 方法一. ...
- EC2实例,EBS及EFS存储
EC2实例,EBS及EFS存储 1 EC2实例基础以及创建一个Linux虚拟机 1.1 AWS EC2 云服务器 1.2 创建Linux虚拟机 2 将IAM Role赋予给EC2实例 2.1 给IAM ...
- python中实例方法与实例属性-Python中的类属性和实例属性以及静态方法和类方法...
可以在Python的类定义中直接添加静态变量,如下例中的foo.此属性属于类C,可以直接通过C.foo访问,而无需实例化它.而实例属性则只存在于对象的实例中,这也就意味着,每一个不同的实例都有只属于自 ...
- 实例分析JAVA CLASS的文件结构
今天把之前在Evernote中的笔记重新整理了一下,发上来供对java class 文件结构的有兴趣的同学参考一下. 学习Java的朋友应该都知道Java从刚开始的时候就打着平台无关性的旗号,说&qu ...
- 【深入Java虚拟机JVM 04】JVM内存溢出OutOfMemoryError异常实例
说明:文章所有内容均摘自<深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)> 在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMe ...
- java的3个初始化_通过实例解析Java类初始化和实例初始化
一.背景: 存在类Father和类Son,其中类Son继承了Father类. 1.父类Father代码 2.子类Son代码 *初始化包括? 成员变量赋初值.代码块.构造器 注意方法是被调用的,有人调用 ...
- 实例解析Java class文件格式
1)Class文件是有8个字节为基础的字节流构成的,这些字节流之间都严格按照规定的顺序排列,并且字节之间不存在任何空隙,对于超过8个字节的数据,将按 照Big-Endian的顺序存储的,也就是说高位字 ...
- linux oracle新建监听,linux 下 oracle图形界面(需配置监听,创建实例)
摘要:oracle 图形界面配置监听,创建实例,以下都是我安装是的截图,按步骤一定可以安装成功! CentOS6.7_x64_minimal_desktop的虚拟机一台(安装oracle需要图形界面, ...
- es6 --- 用promise对象实现Ajax操作的一个实例
首先回顾一下Ajax请求的步骤 var client = new XMLHttpRequest(); client.open("GET", url); client.onready ...
最新文章
- 第十八课.动态图模型
- 未来货运:无人驾驶技术和卡车司机如何配合?
- mysql 分表后如何扩展_mysql扩展至分库分表
- Python开发【Part 4】:数据类型操作
- HackerRank Super Six Substrings dp
- python functools模块(主要是为函数式编程而设计,用于增强函数功能,主要为可调用对象(callable objects)定义高阶函数或操作)
- Citrix VDI-in-a-Box 第二篇:架构篇
- webbrowser中localhost和发布的地址_004、Spring Boot中的项目属性配置
- 公司申请了网易企业电子邮箱,用手机端办公方便吗?
- android Camera 录像时旋转角度
- ES6新特性_Promise对象的catch方法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记029
- python打印文档添加条码_12行代码教会你用python读excel文件,提取数据,生成条形码...
- webtrends之ODBC源数据获取(一)——环境准备篇
- 什么是Java的序列化?
- 【Java】绘图入门和机制,绘图方法演示(绘制坦克)
- 论文阅读《Fast-MVSNet: Sparse-to-Dense Multi-View StereoWith Learned Propagation and Gauss-Newton Refine》
- Web开发项目 # 2048小游戏
- 网络攻防原理与技术 第一章 课后题
- 远程桌面设置分辨率的步骤
- JavaScript鼠标点击事件