知识大全 在Visual Basic.NET使用ADO访问数据库

Posted 数据库

篇首语:知识是工具,而不是目的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在Visual Basic.NET使用ADO访问数据库相关的知识,希望对你有一定的参考价值。

在Visual Basic.NET使用ADO访问数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  NET中以 ADO NET取代以前的ADO 用惯ADO的程序员怎样在 NET中怎样应用ADO呢?本人经过不断的摸索 发现在 NET中ADO一样可以用 并且很好用 现在结合Visual Basic NET强大的类开发功能 本人将ADO开发成组件使用 效果非常理想 我使用的方法如下

   启动Visual Studio NET 在新建项目中选择Visual Basic项目 在模板中选择类库 在名称中输入类库名称如DataAccess 确定后 则进入类库开发环境中 把Class 换名为ADOAccess

   在项目菜单中加入引用 选择页 找到 Microsoft ActionX Data Object Library 或更高版本 选项是Microsoft为了区分现在的 NET 兼容以前的开发方式而设置的 凡是 NET之前的组件都可在页中可找到

   在类名上面写上Imports ADODB Connection Imports ADODB Recordset Imports ADODB CursorLocationEnum Imports System DBNull 条引用语句 这里分别是引用ADO ADO的宏定义 设置空值函数的来源

   在类中定义一局部连接对象变量 Private mCnnDB As New ADODB Connection() 然后定义连接Access数据库的过程 Access 数据库用adUseClient指定 通过Microsoft Jet OLEDB数据访问方式访问数据库 Microsoft Jet OLEDB又有多种版本 其中 是最高版本 它能访问ACCESS 所以这里的数据提供者指定为Microsoft Jet OLEDB 指定了本地数据库和提供者后 就可打开一个数据库了 用open方法实现 完整的代码如下

作用: 连接Access数据库 参数: DBName 数据库名Public Sub ConnAccess(ByVal DBName As String)Dim strDB As StringmCnnDB CursorLocation = adUseClientmCnnDB Provider = Microsoft Jet OLEDB mCnnDB Open(DBName Admin )End Sub

  在ODBC中设置DNS 在下面的ConnectionString中指定用户名和密码 最后用open方法打开 由于ODBC分有用户名和无用户名两者 我们必须分别实现 借助类的函数名重载功能 我们编写两个同名的过程 完整的代码如下

作用: 连接ODBC数据库(不需指定用户和密码 ) 参数 dsnName为ODBC名Public Sub ConnODBC(ByVal dsnName As String)mCnnDB Provider = MSDASQL mCnnDB ConnectionString = Data Source= & dsnName & mCnnDB Open()End Sub

作用: 连接ODBC数据库(需指定用户和密码 ) 参数 dsnName ODBC名 UserID 用户名 UserPwd 用户密码Public Sub ConnODBC(ByVal dsnName As String ByVal UserID As String ByVal UserPwd As String) mCnnDB Provider = MSDASQL mCnnDB ConnectionString = Data Source= & dsnName & User ID= & UserID & ; & _ Password= & UserPwd & mCnnDB Open()End Sub

  SQL Server数据库是Microsoft开发的一种广泛使用的后台数据库 访问SQL Server可以通过指明ODBC驱动程序为SQL Server来实现 即在连接字符串中要有driver=SQL Server 由于它是后台数据库 所以必须指明SQL Server所在的计算机名 通常把它称为服务器 下面的ServerName就说明这点 然后指明是连接哪个数据库 其它的类似上面的ODBC SQL Server的用户分为WIN NT 和授权用户 WIN NT用户是不需要指定用户名和密码的超级用户 否则要指明用户名和密码 这决定于SQL Server数据库管理员 在此不作详细说明 完整的代码如下

作用: 连接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 WithEnd 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 WithEnd 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 WithEnd Sub

  连结数据库后 就可以利用ADO扩充读写数据的函数

  ADO在访问表时要指明其光标类型和锁类型 且指定其读写权限 这里我们编写的是有读写权限的通用的函数 所以我们指定光标CursorType为adOpenKeyset 锁为adLockOptimistic NET需指明其来源 这是为什么开始要有 Imports ADODB CursorLocationEnum 语句的原因 有了这些 就可通过执行查询语句来打开一个表 打开表后 我们判断表是否为空表 不是则移动记录至尾后再现移至记录头(这是为了可以访问其中每条记录 特别是用RecordCount求记录数时不至于返回 的关键) 最后返回一个记录集 完整的代码如下

作用:连接表 参数 TableName表名 返回 记录集Public Function OpenTable(ByVal TableName) As ADODB RecordsetDim strSql As StringDim rec As ADODB Recordsetrec = New ADODB Recordset()rec CursorType = ADODB CursorTypeEnum adOpenKeysetrec LockType = ADODB LockTypeEnum adLockOptimisticstrSql = SELECT * FROM & TableNamerec Open(strSql mCnnDB) 打开记录集If Not rec EOF Thenrec MoveLast()rec MoveFirst()End IfOpenTable = recEnd Function

  下面是扩充上面函数的功能 可以跟据条件访问单个表

Public Overloads Function OpenTable(ByVal TableName As String ByVal strWhere As String) As ADODB RecordsetDim strSql As StringDim rec As ADODB Recordsetrec = New ADODB Recordset()rec CursorType = ADODB CursorTypeEnum adOpenKeysetrec LockType = ADODB LockTypeEnum adLockOptimisticstrSql = SELECT * FROM & TableName & where & strWhererec Open(strSql mCnnDB) 打开记录集If Not rec EOF Thenrec MoveLast()rec MoveFirst()End IfReturn recEnd Function

  继续扩充访问表的功能 有时要打开多个表 读写其中的数据 我们可以通过建立查询视图实现 其它类似上面的OpenTable 完整的代码如下

作用:连接多表 参数 strSQL 返回 记录集Public Function ExecuteSQL(ByVal strSql As String) As ADODB RecordsetDim rec As New ADODB Recordset()rec CursorType = ADODB CursorTypeEnum adOpenKeysetrec LockType = ADODB LockTypeEnum adLockOptimisticrec Open(strSql mCnnDB) 打开记录集ExecuteSQL = recEnd Function

  下面编写了一个用记录集填充AxMSFlexGrid网格的过程 其中函数RecordCount是我自己编写的求记录集中记录的函数 这里不能直接用ADO的RecordCount求得 如果记录集是空 则退出过程 否则求出记录集的记录数和字段来确定AxMSFlexGrid网格的行列数据 然后读出记录集的数据直接填充到AxMSFlexGrid网格 要说明的是读出记录集的数据时要先判断是否为空值 由函数IsDBNull实现(函数IsDBNull来源于System DBNull) 最后记录集应该返回到记录首位 否则影响了原有的记录集 完整的代码如下

作用 用记录集的数据填充网格 参数 MSGrid 网格对象 rec 记录集对象Public Sub FillMsGrid(ByVal MSGrid As AxMSFlexGridLib AxMSFlexGrid ByVal rec As ADODB Recordset)Dim i j RecordNum As IntegerIf rec EOF Then Exit SubRecordNum = RecordCount(rec)MSGrid Rows = RecordNum + MSGrid Cols = rec Fields Count + For i = To RecordNum For j = To rec Fields Count If IsDBNull(rec(j) Value) ThenMSGrid set_TextMatrix(i + j + )ElseMSGrid set_TextMatrix(i + j + rec(j) Value)End IfNextMSGrid set_TextMatrix(i + i)rec MoveNext()Nextrec MoveFrist()End Sub 作用 取记录集的记录数 参数 rec 记录集对象 返回 记录集的记录数

Public Function RecordCount(ByVal rec As ADODB Recordset) As IntegerDim i As IntegerIf rec EOF ThenRecordCount = Exit FunctionEnd IfWith rec MoveFirst()Do While Not EOFi += MoveNext()Loop MoveFirst()End WithRecordCount = iEnd Function

  以上代码编好后放在所定义的类中 下面的省略号代表上面的函数和过程 可直接生成为DLL组件 方法是在 NET编辑环境下选择生成菜单中按生成就生成了DLL文件 然后 你可以直接调用该组件了

Imports ADODB ConnectionImports ADODB RecordsetImports ADODB CursorLocationEnumImports System DBNull 函数IsDBNull的来源Class ADOAccessPrivate mCnnDB As New ADODB Connection()…End Class

  调用上面生成的组件方法如下 在Visual Basic NET中建立一项目 在窗口Form 中加入一AxMSFlexGrid网格命名为MsGrid 布置如下

  然后引用刚建立的Dll 方法是选择项目菜单的添加引用 选择项目页 按浏览找到其DLL文件确定后引用完成 在Form 中定义一ADOAccess对象 在Load事件中编写调用代码 分别测试其功能 代码如下

Public Class Form Inherits System Windows Forms FormDim DB As New ADOAccess()Private Sub Form _Load(ByVal sender As System Object ByVal e As System EventArgs) Handles MyBase LoadDim rec As New ADODB Recordset() DB ConnAccess( e:\\test mdb ) DB ConnSQLServer( wj test ) DB ConnODBC( testODBC ) DB ConnOracle( wj system manager ) rec = DB OpenTable( DEMO customer )rec = DB OpenTable( doc_file )DB FillMsGrid(MSGrid rec)End Sub

  说明

   你的机上要有Access数据库文件(e:\\test mdb) MS Server数据库中有数据库test doc_file 为test中的表 Oracle数据库中有表DEMO customer

   wj 为MS Server服务器名 wj 为Oracle服务器名 system manager 分别为用户名及口令

   一次仅连接一种数据库

  以上程序在Visual Studio NET中调试通过  

cha138/Article/program/net/201311/15806

相关参考

知识大全 Visual C#访问接口

VisualC#访问接口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对接口成员的访问  &n

知识大全 使用 Visual Basic .NET 访问注册表

使用VisualBasic.NET访问注册表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!使用Vi

知识大全 在Visual C++中用ADO进行数据库

在VisualC++中用ADO进行数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  生成应用

知识大全 在Visual Basic中用DAO实现数据库编程

在VisualBasic中用DAO实现数据库编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Visual C#中的数据绑定

VisualC#中的数据绑定  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!我们知道在由于Visua

CPU能直接访问存储在内存中的数据,也能直接访问存储在外存中的数据

CPU能直接访问存储在内存中的数据,也能直接访问存储在外存中的数据。_____答案:错误解析:CPU只能直接访问内存中的数据,外存中的数据必须调人内存后,才能被访问。故本题判断错误。

知识大全 在 Visual Studio .NET 中使用 SQL Server 2000 创建数据库应用程

在VisualStudio.NET中使用SQLServer2000创建数据库应用程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内

知识大全 用Visual C#来修改和删除数据库记录

用VisualC#来修改和删除数据库记录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在前面的一

知识大全 Visual C#实现DB2数据库的编程例子

VisualC#实现DB2数据库的编程例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Vi

知识大全 Visual C#中的数据绑定操作

VisualC#中的数据绑定操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   Vi