Visual-Studio-2017中使用ADO访问数据库的实例_第1页
Visual-Studio-2017中使用ADO访问数据库的实例_第2页
Visual-Studio-2017中使用ADO访问数据库的实例_第3页
Visual-Studio-2017中使用ADO访问数据库的实例_第4页
Visual-Studio-2017中使用ADO访问数据库的实例_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual Studio 2017使用ADO访问数据库的实例 Visual Studio 2017 version 15.2 (26430.14) 以 Visual Studio 2015 和后续的Microsoft Visual Studio 更新中的进展为基础构建而成,为开发团队提供需要的解决方案,使其接纳这种转变并开发和交付利用下一波Windows 平台创新 (Windows 10) 的新式应用程序,同时在所有 Microsoft 平台上支持多种设备和服务。下载地址:/zh-hans/downloads/?rr=http%3A%2F

2、%2F%2Flink%3Furl%3DhsHLHz7GQwtNnXK1Khem7eG8hcpAA0nsMVbhvXzkyMHAEljP965g789cJYHd4_aOzU9wYSVodft3NMdmjSbvUq%26wd%3D%26eqid%3Db34d270ea4d0cdbVisual Studio 2017新增功能支持 Windows 10 App 开发敏捷项目管理(Agile Portfolio Management)版本控制轻量代码注释(lightweight code commenting)编程过程Visual Studio 2017 预览版提供的工具集非常

3、适合生成利用下一波 Windows 平台创新 (Windows 10) 的新式应用程序,同时在所有 Microsoft 平台上支持设备和服务。支持在 Windows 10 中开发 Windows 应用商店应用程序,具体表现在对工具、控件和模板进行了许多更新、对于 XAML 应用程序支持新近提出的编码 UI 测试、用于 XAML 和 HTML 应用程序的 UI 响应能力分析器和能耗探查器、增强了用于 HTML 应用程序的内存探查工具以及改进了与 Windows 应用商店的集成。Visual Studio 2017 预览版进行了大量改进,可帮助您在编码时提高工作效率并集中精力。某些功能首先在 Vi

4、sual Studio Power Tools 扩展中以试验性质出现,经过改进后才纳入到 Visual Studio 中。新版本中内置了多种提高工作效率的功能,如自动补全方括号、使用快捷键移动整行或整块的代码以及行内导航。此外,Visual Studio 2017 预览版的团队资源管理器增强了主页设计,可以更简便地导航到团队协作功能,并可取消停靠“挂起更改”和“生成”,使其显示在一个单独的窗口中。在处理大型代码文件时,可能难以了解当前所处的位置。在 Visual Studio 2017 预览版中,可轻松地在两种模式之间切换滚动条的行为。在栏模式中,可更直接地查看脱字号位置等注释、更改所在位置和

5、跟踪错误。在图模式下,滚动条显示源代码的实时预览,而将鼠标悬停在代码上即可在工具提示中更详细地预览这段代码。然后单击代码所在位置即可导航到该位置。 2017中以 ADO2017取代以前的ADO。用惯ADO的程序员怎样在2017中怎样应用ADO呢?本人经过不断的摸索,发现在2017中ADO一样可以用,并且很好用。现在结合Visual Basic2017强大的类开发功能,本人将ADO开发成组件使用,效果非常理想。我使用的方法如下:启动Visual Studio2017。在新建项目中选择Visual Basic项目,在模板中选择类库,在名称中输入类库名称如DataAccess.确定后,则进入类库开发

6、环境中,把Class1换名为ADOAccess。在项目菜单中加入引用,选择COM页,找到 Microsoft ActionX Data Object 20 Library 或更高版本。COM选项是Microsoft为了区分现在的2017,兼容以前的开发方式而设置的,凡是2017之前的组件都可在COM页中可找到。在类名上面写上Imports ADODB.Connection; Imports ADODB.Recordset ;Imports ADODB.CursorLocationEnum; Imports System.DBNull 4条引用语句,这里分别是引用ADO,ADO的宏定义,设置空值

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

8、据库名Public Sub ConnAccess(ByVal DBName As String)Dim strDB As StringmCnnDB.CursorLocation = adUseClientmCnnDB.Provider = Microsoft.Jet.OLEDB.4.0mCnnDB.Open(DBName, Admin)End Sub 在ODBC中设置DNS,在下面的ConnectionString中指定用户名和密码,最后用open方法打开。由于ODBC分有用户名和无用户名两者,我们必须分别实现,借助类的函数名重载功能,我们编写两个同名的过程,完整的代码如下:作用: 连接ODB

9、C数据库(不需指定用户和密码 )参数: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 S

10、tring, 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,由于它是后台数据库,所以必须指

11、明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 Stri

12、ng)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 Str

13、ing, 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不同的是它不是通过数据库来管理的,所以它不需指明数据库,但它连接时必须指明用户,即使是超级用户

14、也如此,这是它的安全性能高于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 & ; & _Pa

15、ssword= & UserPwd & ; & _Data Source= & ServerName & .Open()End WithEnd Sub 连结数据库后,就可以利用ADO扩充读写数据的函数。ADO在访问表时要指明其光标类型和锁类型,且指定其读写权限,这里我们编写的是有读写权限的通用的函数,所以我们指定光标CursorType为adOpenKeyset,锁为adLockOptimistic,2017需指明其来源,这是为什么开始要有 Imports ADODB.CursorLocationEnum语句的原因。有了这些,就可通过执行查询语句来打开一个表。打开表后,我们判断表是否为空表,不

16、是则移动记录至尾后再现移至记录头(这是为了可以访问其中每条记录,特别是用RecordCount求记录数时不至于返回-1的关键),最后返回一个记录集,完整的代码如下:作用:连接表参数:TableName表名返回:记录集Public Function OpenTable(ByVal TableName) As ADODB.RecordsetDim strSql As StringDim rec As ADODB.Recordsetrec = New ADODB.Recordset()rec.CursorType = ADODB.CursorTypeEnum.adOpenKeysetrec.Lock

17、Type = 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

18、) 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.M

19、oveLast()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.Lo

20、ckType = ADODB.LockTypeEnum.adLockOptimisticrec.Open(strSql, mCnnDB) 打开记录集ExecuteSQL = recEnd Function 下面编写了一个用记录集填充AxMSFlexGrid网格的过程。其中函数RecordCount是我自己编写的求记录集中记录的函数。这里不能直接用ADO的RecordCount求得。如果记录集是空,则退出过程。否则求出记录集的记录数和字段来确定AxMSFlexGrid网格的行列数据,然后读出记录集的数据直接填充到AxMSFlexGrid网格。要说明的是读出记录集的数据时要先判断是否为空值,由函数

21、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.Ro

22、ws = RecordNum + 1MSGrid.Cols = rec.Fields.Count + 1For i = 0 To RecordNum - 1For j = 0 To rec.Fields.Count - 1If IsDBNull(rec(j).Value) ThenMSGrid.set_TextMatrix(i + 1, j + 1, )ElseMSGrid.set_TextMatrix(i + 1, j + 1, rec(j).Value)End IfNextMSGrid.set_TextMatrix(i + 1, 0, i)rec.MoveNext()Nextrec.Mov

23、eFrist()End Sub作用:取记录集的记录数参数:rec 记录集对象返回:记录集的记录数Public Function RecordCount(ByVal rec As ADODB.Recordset) As IntegerDim i As IntegerIf rec.EOF ThenRecordCount = 0Exit FunctionEnd IfWith rec.MoveFirst()Do While Not .EOFi += 1.MoveNext()Loop.MoveFirst()End WithRecordCount = iEnd Function 以上代码编好后放在所定义的

24、类中.下面的省略号代表上面的函数和过程。可直接生成为DLL组件。方法是在2017编辑环境下选择生成菜单中按生成就生成了DLL文件。然后,你可以直接调用该组件了。Imports ADODB.ConnectionImports ADODB.RecordsetImports ADODB.CursorLocationEnumImports System.DBNull 函数IsDBNull的来源Class ADOAccessPrivate mCnnDB As New ADODB.Connection()End Class 调用上面生成的组件方法如下:在Visual Basic2017中建立一项目,在窗口Form1中加入一AxMSFlexGrid网格命名为MsGrid1,布置如下然后引用刚建立的Dll。方法是选择项目菜单的添加引用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论