机房收费系统之模块中代码的含义

本博客来自转载,对模块不太懂的可以好好看看。

前言

这篇博客认认真真的总结了一天,不能够理解机房还有学生中模块的代码的意思,决定去解决一下这部分内容,下面就是我对此部分的代码的理解!感觉这部分的代码不过如此,下来跟着我一起搞懂它吧!

Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset

   '传递参数sql传递查询语句,msgstring 传递查询信息,自身以一个数据集对象的形式返回

      Dim cnn As ADODB.Connection    '重新声明一个数据源连接对象,定义一个ADODB的连接

      Dim rst As ADODB.Recordset     '定义一个数据集

      Dim sTokens() As String        '定义字符串(数组)

      On Error GoTo ExecuteSQL_Error '异常处理,

      sTokens = Split(SQL)  '用split函数产生一个包含各个子串的数组,如果sql=”1 2 3 68”  则所得结果为:

      'sTokens(0)=1,sTokens(1)=2,sTokens(2)=3,sTokens(3)=68。后面对这个函数有详细的解释!



      Set cnn = New ADODB.Connection '实例化一个数据库连接对象,声明的是一个数据集所以用的是set new!

      cnn.Open connectstring           '打开连接,后面定义了connectstring

      If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then cnn.Execute SQL 

      '判断字符串中是否含有指定内容,然后执行查询信息'如果有增,删,改就直接进行数据库查询语句,(这里 需要

      '强调一点cnn.Execute SQL 并没有打开数据集)vb里execute是个方法,执行远程请求或者sql查询的。      

            MsgString = sTokens(0) & "query successful"     '查询成功

       Else
            Set rst = New ADODB.Recordset   '相当于定义了一个新的数据集,数据集必须用set new!

            rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic'在代码后面会有详细的解释!

            'open是recordset(记录集的方法),记录集是一个对象:有它自身的方法,常见的有    

            'addnew,update,delete,open,close,find,move等并没有select这样的方法,所以不能直接查询;要

            '查询就必须用open方法,和sql查询语句。刚开始学的时候有一个误区:认为任何操作都要先打开记录集。

            Set ExecuteSQL = rst  '把rst给了函数executesql

            MsgString = "查询到" & rst.RecordCount & " 条记录 "   '返回记录集对象

       End If

Executesql_exit:
    Set rst = Nothing  '清空数据集对象
    Set cnn = Nothing  '中断连接 Exit Function

 '错误类型判断

ExecuteSQL_Error:
    MsgString = " 查询错误" & Err.Description
    Resume Executesql_exit End Function

Public Function connectstring() As String  ' 声明函数

      connectstring = "filedsn=charge.dsn;UID=sa;PWD=123456"'返回一个数据库连接

End Function

一、split函数

**
它是指返回一个下标从零开始的一维数组,split函数包含指定数目的子字符串。实际上起到的作用就是分割字符串!

1、语法:

   Split(expression[, delimiter[, count[, compare]]])

2、下面简单的举个例子:

> sTokens=split(sql)
> 
> 如果sql=”1 2 3 68”  
> 
> 则所得结果为:sTokens(0)=1,sTokens(1)=2,sTokens(2)=3,sTokens(3)=68

注意我的数字之间都是有空格的,就是这个空格的作用,它可以方便的区别出一个字符串,因此给的值是1、2、3、68!

二、open函数

VB 中,Open 语句提供对文件的读取、写入、限定于其它进程打开的文件的操作。

1.语法:

Recordset.open Source,ActiveConnection,CursorType,LockType,Options

2. 作用:

打开数据集对象

3. 参数说明

(1) Source: ,数据库查询信息,可以是一个SQL查询、数据表或存储过程

(2) ActiveConnection:数据库连接信息,可以是一个已打开的连接,或连接字符串

(3) CursorType:游标类型:

>  (adOpenForwardOnly): 只能在Recordset的记录中向前移动,但速度最快。
> 
>     (adOpenKeyset):可以在Recordset中任意移动,其他用户所做的记录修改可见,但其他用户添加的
> 
>                    记录不可见,删除的记录字段值不能被使用。  
> 
>     (adOpenDynamic):可以在Recordset中任意移动,其他用户增、删、改的记录都可见,但速度最慢。
> 
>     (adOpenStatic):可以在Recordset中任意移动,其他用户增、删、改的记录都不可见。 1

(4) LockType:并发控制

> (adLockReadOnly):recordset的记录为只读
> 
> (adLockPessimistic):只要保持Recordset为打开,别人就无法编辑该记录集中的记录.
> 
> (adLockOptimistic):当updaterecordset中的记录时,将记录加锁
> 
> (adLockBatchOptimistic):以批模式时更新记录时加锁

(5)Options:指定source传递命令的类型

> (adCmdText):SQL语句
> 
> (adCmdTable):数据表的名字
> 
> (adCmdStoredProc):存储过程
> 
> (adCmdUnknown):未知类型

三: UCase()函数

将小写字母转换成大写是将字符串中所有的字符都转换成大写

四:Instr()函数

1.语法

instr( string1, string2, start_position,nth_appearance )

2.作用:

返回要截取的字符串在源字符串中的位置

2.参数说明

(1)string1

源字符串,要在此字符串中查找。

(2)string2

要在string1中查找的字符串

(3)start_position

代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

(4)nth_appearance

代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

五、 SET new到底是怎么回事

对象分为值类型和引用类型,所有的结构体都是值类型,所有的类对象都是引用类型值类型在创建时不需要使用new来实例化,但引用类型需要使用new实例化

值类型包括大部分的数值对象,比如byte\int\long\datetime等这些类型,这些是不需要用new来声明的,比如dim a as int

引用类型包括其他大部分的类型对象,比如数组、窗体对象、各种类型库对象都是。如果不用new声明,就会发生对象为空的错误

一个特例:string是引用类型,但它不需要使用new来声明

dim s as string = “…”

六、execute方法的用法

该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:

1.执行SQL查询语句时,将返回查询得到的记录集。用法为:

Set 对象变量名=连接对象.Execute(“SQL 查询语言”)Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。

2.执行SQL的操作性语言时(如:delete,update等),没有记录集的返回。此时用法为:

连接对象.Execute “SQL 操作性语句” [, RecordAffected][, Option]

RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。

Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。

七、思维导图

这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
机房收费管理系统 问题描述 结合我校计算机机房的运作模式,设计一种适合的收费管理系统,能够实现相关的人员检索,计时收费,管理汇总等功能模块。 开发环境 采用C或C++实现,VC++6.0 基本要求 主要功能模块: (1) 登录模块 (2) 上机管理模块 说明:上机登记时,余额不足3元或卡处于挂失状态,则拒绝登记。 每位同学的一次上机形成一条记录,每30秒遍历一次上机记录表,对表所有正上机字段为TRUE的记录的上机用时增加30秒,同时减少上机卡表的余额。 (3) 上机卡管理模块 (4) 充值挂失模块 (5) 查找统计模块:统计某天上机的总时数、每次上机的平均时数和机房的收入;某学生上机的次数、上机总时数、每次上机平均时间;挂失和查询余额。 参考的数据结构: 上机卡(卡号,姓名,专业班级,余额,状态),状态有:正常和挂失。 上机记录(卡号,上机日期,开始时间,上机用时,正上机,管理号代码) 上机记录表永久保存,用于事后查询和统计。 设计要求 1) 界面友好,输入信息符合逻辑:如上机时间设定在合理的时间范围。 2) 能从实践生活出发,设计合理的功能模块 3) 各类信息的数据结构明晰 4) 可根据自身生活体验添加相关功能模块。 拓展功能要求 鼓励采用Turbo C/C++、MFC等开发工具,实现彩色或图形操作界面。鼓励引入小型数据作为处理数据的来源,拓展知识面。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值