下面是我在设计窗体感到厌烦的时候东拼西凑做出来的机房的数据连接代码。这次秉着搞清每句语法的意思,每一段代码都被搜了了几遍。下面就是我的一些总结,希望各位多多指点。
Option Explicit '//这个就不多提了啊//米老师多次强调的//
Public UserName As String '//声明一个全局变量UserName//
'以文件DSN标记数据源,访问ODBC数据源
Public Function ConnectString() As String '声明全局变量
'return a DB ConnectString
ConnectString = "provider=sqloledb;server=192.168.26.94;UID=sa;PWD=1;database=charge of student(Mine)"
'上面这句为连接地址、验证信息以及所用数据库
End Function
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
'Executes SQL and returns Recordset
Dim cnn As ADODB.Connection '//定义连接数据库的连接线,并将其命名为“cnn”//
Dim rst As ADODB.Recordset '//定义一个名为”rst“的记录集变量//
Dim sToKens() As String '//定义数组,从而将SQL语句按关键字进行保存 //
On Error GoTo ExecuteSQL_Error '//错误处理:如果出现异常,执行ExecuteSQL_Error标签后的语句//
sToKens = Split(SQL) '//将实参sToKens进行分解,并将分解结果赋值给数组Split//
Set cnn = New ADODB.Connection '//创建一个连接//
cnn.Open ConnectionString '//打开ConnectionStrings所代表的数据库//
If InStr("INSERT,DELETE,UPDATE", UCase$(sToKens(0))) Then '//看数组sToKens中的第一个元素 _
是否是(插入、删除、更新)三个中的一个//
cnn.Execute SQL '//如果是,执行查询语句//
MsgString = sToKens(0) & "query successful" '//消息字符串//
Else
Set rst = New ADODB.Recordset '//创建一个新的记录集变量//
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic '//根据要求访问数据库,得到一个 _
临时表,游标指向第一条记录。//
'计算记录条数
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录。"
End If
ExecuteSQL_Exit '//异常处理标签//
Set rst = Nothing '//清空记录集//
Set cnn = Nothing '//断开数据库链接//
Exit Function
ExecuteSQL_Error '//异常处理标签//
MsgString = "查询错误" & Err.Description '//判断错误类型//
Resume ExecuteSQL_Exit '//重新开始执行ExecuteSQL_Exit//
End Function
关于上面代码中用到的两个函数Split和InStr,我是这样理解的:
一、Split函数
看过几篇讲解Split的文章后,总算是对Split有了一个自己的理解。简单点讲,Split函数常用来传输数据和文本,而Split函数本质上就是一把刀:可以字符串斩成一维数组的刀。
VB中的Split语法:
Split(Expression,[Delimiter],[Count],[Compare])
Experssion:就是我们想要转化的表达式了;
Delimiter:分割的标识点(可省略);
Conut:需要返回的字符串数(可省略,-1为返回全部字符串);需要注意的是Count值是将经过Split函数处理的字符串分成几组来进行显示的依据;有意思的是如果Count值相对于输出的一维数组的元素数过多时会发生一个有意思的现象,我在这里就不再赘述请大家仔细在下面的例子中寻找这个现象吧。
Compare:比较方式(可选)。
举例:
Split("十三期,十二期,十一期,十期",“,”,3),这时Split函数返回的将是"十三期"、"十二期"、"十一期,十期"这三个元 素构成的一个一维数组。
(例子的代码部分)
(本例的运行结果)
二、InStr函数
InStr函数的使命在我看来就好比一个雷达搜寻的功能:在A中有没有B?
VB中的InStr语法:
InStr([Start],String1,String2,[Compare])
参数简介:
Start:从String1中开始查找的位置。可选,默认值为1;若为正,则从左向右进行查找;若为负,则从右往左进行查找。
String1:源字符串,查找要在String1中展开;
String2:目标字符串,在String1中查找的字符串;
Compare:执行比较。
本例代码部分
运行结果:
以上是我对这部分代码的理解,希望有大牛可以帮我指点指点。
感谢您的宝贵时间!