机房——彻底明白机房中模块的代码的逻辑与含义

前言

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

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中任意移动,其他用户增、删、改的记录都不可见。

(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方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。

七、思维导图

我的名字叫jerry

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 115
    评论
经过1个月的调整,学校机房管理系统终于走上了1.0正式版的道路,欢迎大家测试! 2012年2月27日更新 1 增加学生可以自己浏览自己的登记记录! 更新日志:(2011年12月21更新,重新下载程序包) 1 、学生文件不能上传问题的修复 2、后台上机记录 班级判断错误修正 3、增加编辑器(文件上传)后台 可以直接修改上传文件的类型和大小 4、机房管理后台菜单增加 目前学校机房管理系统主要功能如下: 1 学生登陆系统: 学生上课通过选择班级,输入自己的真实姓名,如果学生存在,则判断密码是否正确,如果学生不存在,则保存学生信息。 2 学生上课登记 由后台管理员设置好机房,可以是自动根据机房IP判断或者指定机房,主要是适应有些学校多个机房的问题,然后学生登陆后,就可以进行使用情况的登记。(后台可以设置好使用情况,方面学生选择),默认同个学生机房登记1个小时内,只能允许登记一次! 3、学生自我文件管理 对于机房来说 学生的文件管理一直是个头疼的问题,放本地,容易被其他同学误删,老师也难以管理;放服务器则好了很多,本系统通过学生文件管理,让学生把重要的东西传到系统,同时也可以通过共享文件,和本班同学一起共享,同事加入了评分系统,提供学生的积极性!这个可以作为老师上课最后作业评价的一部分! 4、学生作业上交 通过客户端学生的作业上交,老师可以对作业进行评价和批阅, 5、学生在线问答 主要是通过学生提问,老师答复的简单形式 来达到一定的交互作用。 6、在线公告系统 通过对指定班级或者全校进行公告,发布信息! 备注:1,文件附件话,和学生进行绑定,避免了服务器资源的浪费,删除学生,就删除了学生相关的文件 2、上机记录独立,不会因为删除学生班级等信息而影响记录的完整性! 后台管理:/admin_login.asp 管理员 admin 密码 123456

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 115
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值