VisualStudio中使用ADO访问数据库的实例.docx

上传人:b****1 文档编号:14802251 上传时间:2023-06-27 格式:DOCX 页数:12 大小:705.95KB
下载 相关 举报
VisualStudio中使用ADO访问数据库的实例.docx_第1页
第1页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第2页
第2页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第3页
第3页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第4页
第4页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第5页
第5页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第6页
第6页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第7页
第7页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第8页
第8页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第9页
第9页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第10页
第10页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第11页
第11页 / 共12页
VisualStudio中使用ADO访问数据库的实例.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VisualStudio中使用ADO访问数据库的实例.docx

《VisualStudio中使用ADO访问数据库的实例.docx》由会员分享,可在线阅读,更多相关《VisualStudio中使用ADO访问数据库的实例.docx(12页珍藏版)》请在冰点文库上搜索。

VisualStudio中使用ADO访问数据库的实例.docx

VisualStudio中使用ADO访问数据库的实例

VisualStudio2017

使用ADO访问数据库的实例

VisualStudio2017version以VisualStudio2015和后续的MicrosoftVisualStudio更新中的进展为基础构建而成,为开发团队提供需要的解决方案,使其接纳这种转变并开发和交付利用下一波Windows平台创新(Windows10)的新式应用程序,同时在所有Microsoft平台上支持多种设备和服务。

下载地址:

Studio2017新增功能

支持Windows10App开发

敏捷项目管理(AgilePortfolioManagement)

版本控制

轻量代码注释(lightweightcodecommenting)

编程过程

VisualStudio2017预览版提供的工具集非常适合生成利用下一波Windows平台创新(Windows10)的新式应用程序,同时在所有Microsoft平台上支持设备和服务。

支持在Windows10中开发Windows应用商店应用程序,具体表现在对工具、控件和模板进行了许多更新、对于XAML应用程序支持新近提出的编码UI测试、用于XAML和HTML应用程序的UI响应能力分析器和能耗探查器、增强了用于HTML应用程序的内存探查工具以及改进了与Windows应用商店的集成。

VisualStudio2017预览版进行了大量改进,可帮助您在编码时提高工作效率并集中精力。

某些功能首先在VisualStudioPowerTools扩展中以试验性质出现,经过改进后才纳入到VisualStudio中。

新版本中内置了多种提高工作效率的功能,如自动补全方括号、使用快捷键移动整行或整块的代码以及行内导航。

此外,VisualStudio2017预览版的团队资源管理器增强了主页设计,可以更简便地导航到团队协作功能,并可取消停靠“挂起更改”和“生成”,使其显示在一个单独的窗口中。

在处理大型代码文件时,可能难以了解当前所处的位置。

在VisualStudio2017预览版中,可轻松地在两种模式之间切换滚动条的行为。

在栏模式中,可更直接地查看脱字号位置等注释、更改所在位置和跟踪错误。

在图模式下,滚动条显示源代码的实时预览,而将鼠标悬停在代码上即可在工具提示中更详细地预览这段代码。

然后单击代码所在位置即可导航到该位置。

  2017中以ADO2017取代以前的ADO。

用惯ADO的程序员怎样在2017中怎样应用ADO呢?

本人经过不断的摸索,发现在2017中ADO一样可以用,并且很好用。

现在结合VisualBasic2017强大的类开发功能,本人将ADO开发成组件使用,效果非常理想。

我使用的方法如下:

  启动VisualStudio2017。

在新建项目中选择VisualBasic项目,在模板中选择类库,在名称中输入类库名称如DataAccess.确定后,则进入类库开发环境中,把Class1换名为ADOAccess。

  在项目菜单中加入引用,选择COM页,找到MicrosoftActionXDataObject20Library或更高版本。

COM选项是Microsoft为了区分现在的2017,兼容以前的开发方式而设置的,凡是2017之前的组件都可在COM页中可找到。

  在类名上面写上Imports;Imports;Imports;Imports4条引用语句,这里分别是引用ADO,ADO的宏定义,设置空值函数的来源。

  在类中定义一局部连接对象变量。

PrivatemCnnDBAsNew()

然后定义连接Access数据库的过程.Access数据库用adUseClient指定,通过数据访问方式访问数据库,又有多种版本,其中是最高版本,它能访问ACCESS2000,所以这里的数据提供者指定为。

指定了本地数据库和提供者后,就可打开一个数据库了,用open方法实现。

完整的代码如下:

''作用:

连接Access数据库

''参数:

DBName数据库名

PublicSubConnAccess(ByValDBNameAsString)

DimstrDBAsString

=adUseClient

=""

(DBName,"Admin")

EndSub

  在ODBC中设置DNS,在下面的ConnectionString中指定用户名和密码,最后用open方法打开。

由于ODBC分有用户名和无用户名两者,我们必须分别实现,借助类的函数名重载功能,我们编写两个同名的过程,完整的代码如下:

''作用:

连接ODBC数据库(不需指定用户和密码)

''参数:

dsnName为ODBC名

PublicSubConnODBC(ByValdsnNameAsString)

="MSDASQL"

="DataSource=''"&dsnName&"''"

()

EndSub

''作用:

连接ODBC数据库(需指定用户和密码)

''参数:

dsnNameODBC名,UserID用户名,UserPwd用户密码

PublicSubConnODBC(ByValdsnNameAsString,ByValUserIDAsString,ByValUserPwdAsString)="MSDASQL"

="DataSource=''"&dsnName&"''UserID=''"&UserID&"'';"&_

"Password=''"&UserPwd&"

()

EndSub

 

  SQLServer数据库是Microsoft开发的一种广泛使用的后台数据库。

访问SQLServer可以通过指明ODBC驱动程序为SQLServer来实现,即在连接字符串中要有driver={SQLServer},由于它是后台数据库,所以必须指明SQLServer所在的计算机名,通常把它称为服务器,下面的ServerName就说明这点,然后指明是连接哪个数据库。

其它的类似上面的ODBC。

SQLServer的用户分为WINNT和授权用户,WINNT用户是不需要指定用户名和密码的超级用户,否则要指明用户名和密码,这决定于SQLServer数据库管理员,在此不作详细说明,完整的代码如下:

 

''作用:

连接SQLServer数据库

''参数:

ServerName服务器名,DBName数据库名

PublicSubConnSQLServer(ByValServerNameAsString,ByValDBNameAsString)

WithmCnnDB

.ConnectionString="uid=;pwd=;driver={SQLServer};"&_

"server="&ServerName&_

";database="&DBName

.Open()

EndWith

EndSub

''作用:

连接SQLServer数据库

''参数:

ServerName服务器名,DBName数据库名,UserID用户名,UserPwd用户密码

PublicSubConnSQLServer(ByValServerNameAsString,ByValDBNameAsString,ByValUserIDAsString,ByValUserPwdAsString)

WithmCnnDB

.ConnectionString="uid=''"&UserID&"'';pwd=''"&UserPwd&"'';driver={SQLServer};"&_

"server="&ServerName&_

";database="&DBName

.Open()

EndWith

EndSub

  Oracle数据库是目前最有影响的一种广泛使用的后台数据库。

访问Oracle先指明其提供者MSDAORA。

Oracle与SqlServer不同的是它不是通过数据库来管理的,所以它不需指明数据库,但它连接时必须指明用户,即使是超级用户也如此,这是它的安全性能高于SqlServer的理现之一,所以我们只须编写一个过程。

其它类似。

完整的代码如下:

 

''作用:

连接Oracle数据库

''参数:

ServerName服务器名,DBName数据库名,UserID用户名,UserPwd用户密码

PublicSubConnOracle(ByValServerNameAsString,ByValUserIDAsString,ByValUserPwdAsString)

WithmCnnDB

.Provider="MSDAORA"

.ConnectionString="UserID=''"&UserID&"'';"&_

"Password=''"&UserPwd&"'';"&_

"DataSource=''"&ServerName&"''"

.Open()

EndWith

EndSub

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

  ADO在访问表时要指明其光标类型和锁类型,且指定其读写权限,这里我们编写的是有读写权限的通用的函数,所以我们指定光标CursorType为adOpenKeyset,锁为adLockOptimistic,2017需指明其来源,这是为什么开始要有"Imports"语句的原因。

有了这些,就可通过执行查询语句来打开一个表。

打开表后,我们判断表是否为空表,不是则移动记录至尾后再现移至记录头(这是为了可以访问其中每条记录,特别是用RecordCount求记录数时不至于返回-1的关键),最后返回一个记录集,完整的代码如下:

 

''作用:

连接表

''参数:

TableName表名

''返回:

记录集

PublicFunctionOpenTable(ByValTableName)As

DimstrSqlAsString

DimrecAs

rec=New()

==="SELECT*FROM"&TableName

(strSql,mCnnDB)''打开记录集

IfNotThen

()

()

EndIf

OpenTable=rec

EndFunction

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

 

PublicOverloadsFunctionOpenTable(ByValTableNameAsString,ByValstrWhereAsString)As

DimstrSqlAsString

DimrecAs

rec=New()

==="SELECT*FROM"&TableName&"where"&strWhere

(strSql,mCnnDB)''打开记录集

IfNotThen

()

()

EndIf

Returnrec

EndFunction

  继续扩充访问表的功能。

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

 

''作用:

连接多表

''参数:

strSQL

''返回:

记录集

PublicFunctionExecuteSQL(ByValstrSqlAsString)As

DimrecAsNew()

==mCnnDB)''打开记录集

ExecuteSQL=rec

EndFunction

 

  下面编写了一个用记录集填充AxMSFlexGrid网格的过程。

其中函数RecordCount是我自己编写的求记录集中记录的函数。

这里不能直接用ADO的RecordCount求得。

如果记录集是空,则退出过程。

否则求出记录集的记录数和字段来确定AxMSFlexGrid网格的行列数据,然后读出记录集的数据直接填充到AxMSFlexGrid网格。

要说明的是读出记录集的数据时要先判断是否为空值,由函数IsDBNull实现(函数IsDBNull来源于.最后记录集应该返回到记录首位,否则影响了原有的记录集,完整的代码如下:

 

''作用:

用记录集的数据填充网格

''参数:

MSGrid网格对象,rec记录集对象

PublicSubFillMsGrid(ByValMSGridAs,ByValrecAs

Dimi,j,RecordNumAsInteger

IfThenExitSub

RecordNum=RecordCount(rec)

=RecordNum+1

=+1

Fori=0ToRecordNum-1

Forj=0To-1

IfIsDBNull(rec(j).Value)Then

(i+1,j+1,"")

Else

(i+1,j+1,rec(j).Value)

EndIf

Next

(i+1,0,i)

()

Next

()

EndSub

''作用:

取记录集的记录数

''参数:

rec记录集对象

''返回:

记录集的记录数

PublicFunctionRecordCount(ByValrecAsAsInteger

DimiAsInteger

IfThen

RecordCount=0

ExitFunction

EndIf

Withrec

.MoveFirst()

DoWhileNot.EOF

i+=1

.MoveNext()

Loop

.MoveFirst()

EndWith

RecordCount=i

EndFunction

  以上代码编好后放在所定义的类中.下面的省略号代表上面的函数和过程。

可直接生成为DLL组件。

方法是在2017编辑环境下选择生成菜单中按生成就生成了DLL文件。

然后,你可以直接调用该组件了。

 

Imports

Imports

Imports

Imports''函数IsDBNull的来源

ClassADOAccess

PrivatemCnnDBAsNew()

EndClass

  调用上面生成的组件方法如下:

在VisualBasic2017中建立一项目,在窗口Form1中加入一AxMSFlexGrid网格命名为MsGrid1,布置如下

  然后引用刚建立的Dll。

方法是选择项目菜单的添加引用,选择项目页,按浏览找到其DLL文件确定后引用完成。

在Form1中定义一ADOAccess对象,在Load事件中编写调用代码,分别测试其功能,代码如下:

 

PublicClassForm1

InheritsDBAsNewADOAccess()

PrivateSubForm1_Load(ByValsenderAs,ByValeAsHandles

DimrecAsNew()

''("e:

\")

''("wj-1058","test")

''("testODBC")

''("wj-1059","system","manager")

''rec=("")

rec=("doc_file")

(MSGrid1,rec)

EndSub

  说明:

  1.你的机上要有Access数据库文件(e:

\),MSServer数据库中有数据库test,doc_file为test中的表,Oracle数据库中有表

  2.wj-1058为MSServer服务器名,wj-1059为Oracle服务器名,"system","manager"分别为用户名及口令。

  3.一次仅连接一种数据库。

  以上程序在VisualStudio2017中调试通过。

 

总结:

上面方法介绍了刚面世不久的VisualBasic2017中有关数据库的开发,ADO在VisualBasic2017中的应用,连接几种最实用的数据库,且介绍了编写组件的方法。

本讲结束。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2