扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:天雨 来源:yesky 2007年11月10日
关键字:
'作用: 连接SQL Server数据库 '参数:ServerName 服务器名,DBName 数据库名 Public Sub ConnSQLServer(ByVal ServerName As String, ByVal DBName As String) With mCnnDB .ConnectionString = "uid=;pwd= ;driver={SQL Server};" & _ "server=" & ServerName & _ ";database=" & DBName .Open() End With End Sub '作用: 连接SQL Server数据库 '参数:ServerName 服务器名,DBName 数据库名,UserID 用户名,UserPwd 用户密码 Public Sub ConnSQLServer(ByVal ServerName As String, ByVal DBName As String,ByVal UserID As String, ByVal UserPwd As String) With mCnnDB .ConnectionString = "uid='" & UserID & "';pwd='" & UserPwd &"';driver={SQL Server};" & _ "server=" & ServerName & _ ";database=" & DBName .Open() End With End Sub |
Oracle数据库是目前最有影响的一种广泛使用的后台数据库。访问Oracle先指明其提供者MSDAORA。Oracle与Sql Server不同的是它不是通过数据库来管理的,所以它不需指明数据库,但它连接时必须指明用户,即使是超级用户也如此,这是它的安全性能高于Sql Server的理现之一,所以我们只须编写一个过程。其它类似。完整的代码如下:
'作用: 连接Oracle数据库 '参数:ServerName 服务器名,DBName 数据库名,UserID 用户名,UserPwd 用户密码 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 |
下面是扩充上面函数的功能,可以跟据条件访问单个表。
Public Overloads Function OpenTable(ByVal TableName As String, ByVal strWhere As String) 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 & " where " & strWhere rec.Open(strSql, mCnnDB) '打开记录集 If Not rec.EOF Then rec.MoveLast() rec.MoveFirst() End If Return rec End Function |
继续扩充访问表的功能。有时要打开多个表,读写其中的数据,我们可以通过建立查询视图实现,其它类似上面的OpenTable,完整的代码如下:
'作用:连接多表 '参数:strSQL '返回:记录集 Public Function ExecuteSQL(ByVal strSql As String) As ADODB.Recordset Dim rec As New ADODB.Recordset() rec.CursorType = ADODB.CursorTypeEnum.adOpenKeyset rec.LockType = ADODB.LockTypeEnum.adLockOptimistic rec.Open(strSql, mCnnDB) '打开记录集 ExecuteSQL = rec End Function |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者