您的位置:首页 > 编程语言

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

2017-11-01 18:59 531 查看

前言

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

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

七、思维导图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: