Public Sub ConnOracle(ByVal ServerName As String, ByVal UserID As String, ByVal UserPwd As String)
With mCnnDB
.Provider = "MSDAORA"
.ConnectionString = "User ID='" & UserID & "';" & _
"Password='" & UserPwd & "';" & _
"Data Source='" & ServerName & "'"
.Open()
End With
End Sub
有了上面的连接数据库的方法,我们就直接可读写数据了。下面利用ADO扩充读写数据的函数。
ADO在访问表时要指明其光标类型和锁类型,且指定不同其权限就不同,权限分为读写二种,这里我们编写的是有读写权限的通用的函数,所以我们指定光标CursorType为adOpenKeyset,锁为开锁adLockOptimistic,.net需指明其来源,这是为什么开始要有 “Imports ADODB.CursorLocationEnum”语句的原因。有了这些,就可通过执行查询语句来打开一个表。打开表后,我们判断表是否为空表,不是则移动记录至尾后再现移至记录头(这是为了可以访问其中每条记录,特别是用RecordCount求记录数时不至有时返回-1的关键),最后返回一个记录集,完整的代码如下:
'参数:TableName表名
'返回:记录集
Public Function OpenTable(ByVal TableName) As ADODB.Recordset
Dim strSql As String
Dim rec As ADODB.Recordset
rec = New ADODB.Recordset()
rec.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
rec.LockType = ADODB.LockTypeEnum.adLockOptimistic
strSql = "SELECT * FROM " & TableName
rec.Open(strSql, mCnnDB) '打开记录集
If Not rec.EOF Then
rec.MoveLast()
rec.MoveFirst()
End If
OpenTable = rec
End Function
下面是扩充上面函数的功能,可以跟据条件访问单个表。
Dim strSql As String
Dim rec As ADODB.Recordset
rec = New ADODB.Recordset()
rec.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
rec.LockType = ADODB.LockTypeEnum.adLockOptimistic
strSql = "SELECT * FROM " & TableName & " where " & strWhere
rec.Open(strSql, mCnnDB) '打开记录集
If Not rec.EOF Then
rec.MoveLast()
rec.MoveFirst()
End If
Return rec
End Function




