机房收费系统之模块代码理解

来源:互联网 发布:socket作用 java 知乎 编辑:程序博客网 时间:2024/05/16 14:38

代码展示:

'以文件DSN标记,连接ODBC数据源
Public Function ConnectString()  '自定义函数
'ConnectString = "filedsn=charge.dsn;uid=sa;pwd=123456"
ConnectString = "Provider=SQLOLEDB;DataSource=192.168.24.194;Initial CataLog=charge_sys;UID=sa;PWD=123456"
End Function


Public Function ExecuteSQL(ByVal sql As String, MsgString As String) As ADODB.Recordset '自定义函数

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

Dim rst As New ADODB.Recordset '重新声明一个数据集对象,定义Recordset对象

Dim sTokens() As String '定义的一个数组

Tokens = Split(sql) '(sql是上面的一个参数)分割字符串,即把一个字符串分割成一个字符串数组'如果sql为"this,is ,my,sharing",得到的结果为sTokens(0)="this",stokens(1)="is",sTokens(2)="my",sTokens(3)="sharing"

Set cnn = New ADODB.Connection '实例化一个数据库连接对象

cnn.Open ConnectString '打开数据库,方式调用上面写的自定义函数

If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then 

cnn.Execute sql '如果有增,删,改就直接进行数据库查询语句,vb里execute是个方法,执行远程请求或者sql查询的。

 MsgString = sTokens(0) & "query successful"

Else '否则进行SQL查询操作,得到记录集 

Set rst = New ADODB.Recordset 

rst.Open Trim$(sql), cnn, adOpenKeyset, adLockOptimistic '打开记录集 

Set ExecuteSQL = rst '打开数据库 MsgString = "查询到" & rst.RecordCount & "条记录"

 End If

函数解释:

一:  split()函数

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

详细用法:http://baike.baidu.com/link?url=Fdvpnl78Y4MDlDihQsiKX0wUvgFg0VaF8a1_UHdlfHPYj3JvwL555CywNvY5iiUFasAfQ_HutW69SrlvQKllHa

1.      含义:分割字符串

2.      以上面代码为例说明:

sTokens=split(sql)

如果sql=”select * from student_info”

则所得结果为:sTokens(0)=select,sTokens(1)=*,sTokens(2)=from,sTokens(3)=student_info

二:open函数

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

1.    作用:打开数据集对象

2.  参数说明

Source: 可以是一个SQL查询、数据表或存储过程

ActiveConnection:可以是一个已打开的连接,或连接字符串

CursorType:游标类型:

0(adOpenForwardOnly): 只能在Recordset的记录中向前移动,但速度最快。

1(adOpenKeyset):可以在Recordset中任意移动,其他用户所做的记录修改可见,但其他用户添加的记录不可见,删除的记录字段值不能被使用。

2(adOpenDynamic):可以在Recordset中任意移动,其他用户增、删、改的记录都可见,但速度最慢。

3(adOpenStatic):可以在Recordset中任意移动,其他用户增、删、改的记录都不可见。

LockType:并发控制

0(adLockReadOnly):recordset的记录为只读

1(adLockPessimistic):只要保持Recordset为打开,别人就无法编辑该记录集中的记录.

 2(adLockOptimistic):当updaterecordset中的记录时,将记录加锁

3(adLockBatchOptimistic):以批模式时更新记录时加锁

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

1(adCmdText):SQL语句

2(adCmdTable):数据表的名字

4(adCmdStoredProc):存储过程

8(adCmdUnknown):未知类型

如果参数设置不对,有可能更新的数据就写入不到数据库中,记得敲机房时有个同学参数设置的不合适,怎么着数据就是写入不到数据库中。

三.  UCase()函数

1.作用:将小写字母转换成大写

2.说明:是将字符串中所有的字符都转换成大写

四:Instr()函数

instr( string1, string2, start_position,nth_appearance ) 

1.作用:返回要截取的字符串在源字符串中的位置

2.参数说明

string1
源字符串,要在此字符串中查找。
string2
要在string1中查找的字符串 。
start_position
代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance
代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

3.注意:

  位置索引号从1开始。即在源字符串中的位置
  如果String2在String1中没有找到,instr函数返回0。

1 0