编写数据库应用程序必看Word文档格式.docx
- 文档编号:19653021
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:28
- 大小:28.58KB
编写数据库应用程序必看Word文档格式.docx
《编写数据库应用程序必看Word文档格式.docx》由会员分享,可在线阅读,更多相关《编写数据库应用程序必看Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
但是,实际使用时还是需要在客户端计算机上安装Qracle公司提供
的动态联接库。
二、ODBC添加新数据源
方法:
Windows-〉控制面板-〉资源管理器(Windows2000为管理工具)-〉
ODBC数据源(32位)。
打开“ODBC数据管理器”
这里首先要决定的是采用“用户DSN”还是“系统DSN”
用户DSN:
该数据源名只提供给用该用户名登陆的用户。
在网络使用时
主要用于在客户端定义数据源。
系统DSN:
该数据源名提供给用任何用户名登陆的用户,包括在网络上
(NT)使用。
添加:
选择驱动程序。
1)选择Access,-〉完成安装:
数据源名:
自己给出
数据库“选择”-〉选择相应的数
据库。
确定:
我们可以在数据源列表中看到新定义的数
据源名字。
2)选择SQLServer-〉完成建立新的数据源到SQLServer
命名数据源:
服务器:
给出服务器名
如果从列表中选择服务器名称,则不需要更
多的配置。
如果使用相同的计算机作为SQLServer,
可以在此服务器框中输入“(local)”(本地)。
然后用户可连接到SQLServer的本地副本,即
便正在运行SQLServer的非网络版本。
在说明框可以写进关于数据源可选的描述性
说明。
例如,“所有员工的工资和销售情况”。
下一步
使用用户登陆ID和密码的SQLServer验证
输入用户名和密码
下一步-〉完成配置
可以看出,不同的驱动程序配置方法不尽相同。
后面就可以看到,使用ODBC数据源名并不是唯一的选择,我们也可以使
用直接用数据库名或者服务器名(SQLServer)联接的方式,这时,并不需
要事先设置ODBC数据源的名字。
第二节DAO和ADO的技术状态
1994年,微软在Access2.0中首先引入了16位的DAO(DataAccessing
Object数据访问对象),以实现和Jet数据库引擎的连接,这是允许程序
员操纵Jet引擎的第一个面向对象的接口。
DAO提供了一个复杂的可编程数据对象的层次模型,由上到下分别是:
DBEngine
Workspace
Database
TableDef
QueryDef
Recorset
DAO的使用非常复杂,例如,为了引用Recorset,必须从上到下逐级
引用:
DIMwnameAsDAO.Workspace
DIMwm1AsDAO.Database
DIMwm2AsDAO.TableDef
DIMwm3AsDAO.QueryDef
DIMwm4AsDAO.Recorset
setwname=DBEngine.Workspace(0)
.....
更重要的,DAO/Jet并不适合客户/服务器模式的数据库系统,于是,
微软又开发出了RDO(RemoteDataObject远程数据对象),和RDC控
件(在MSRemoteDataControl6.0下),解决了客户/服务器模式下,开
发象SQLServer或Oracle这些大型远程数据库的困难。
VB提供的RDO组件在工程-〉引用:
客户端:
MSRemoteDataObject2.0
服务器端:
MSRemoteDataServers2.5Library
和
MSRemoteDataServersServer2.5Library
显然,这种模式需要编写服务器端程序,在某些情况下可能是不现
实的。
继RDO之后,微软又提出了全新的ADO技术(ActiveXDataObject
),ADO是DAO和RDO的继承者,它基于微软提出来的OLEDB数据访问
模式,它可以处理目前几乎全部关系型数据库和非关系型数据库系统。
而且,它是专门为大范围的商业数据库系统设计的,ADO比DAO占用
内存少,所以它更适合大流量和大事务量的网络计算机系统。
ADO的影响很大,现在几乎所有的非微软开发环境都内置了ADO驱
动程序。
ADO的使用也相当方便,利用ADODC控件(在MSADOData
Control6.0(OLEDB)下),可以在本地计算机上获取本地和远程的数据
源,并且可以立刻测试联接是否成功。
ADODC控件,是以ADO为父类的一个子类,所以,它继承了ADO的
几乎绝大多数属性事件和方法,同时,也加入了自己的属性事件和方法。
这些属性事件和方法,又大多数套用于一种原来基于DAO的控件Data,
为熟悉Data控件的程序员做一个合理的过渡,并且,加入了和数据绑定
控件连接的内容。
所以,同一种目的,在ADODC中可以有两种方式解决,这样做的好
处是给程序员带来了方便,更重要的,ADODC和数据绑定控件连接非常
方便,但代价是无疑降低了效率。
因此,尽管使用ADODC控件处理数据库问题相当方便,但是,在更
多的大型数据库系统的设计中,人们还是使用直接调用ADO类的方式,
因为这样一来,程序的效率往往更高,更灵活。
鉴于这个情况,在下面的讨论中,我们两种情况都进行讨论,具体
怎么用,要看项目的需要。
当然首先是从源头说起,先研究ADO。
还需要说明的是:
ADODC提供了一整套的自动联接方式,这些方式,
十分方便,但是,如果不明白原理,往往联接以后还是感到自己心中无
数,所以,即使您使用ADODC,但是仔细的研究ADO本身的东西,也还
是很有必要的。
同时,利用ADODC提供的信息,也给以编程为主的ADO
提供了方便,这些我们后面都会加以介绍。
最近一两年,ADO技术又有了长足的发展,这里首先要提到微软的
VisualStudio.Net平台,在这个平台上的主导语言是VisualBasic,
VisualC++,VisualC#,对于VB6.0的编程人员,过渡到VB.NET是理
所当然的事情。
微软公司对VB升级到VB.Net的同时,对数据访问模型进行了翻天覆
地的升级。
把原来的ADO模型升级为全新的ADO.NET数据源,
原来最重要的RecordSet现在消失了,取而代之的是DataSet和
DataReader,而且不再像原来RecordSet那样一次只读取一条记录,而
是读取整个数据库,然后在内存中建立一个映像,从而实现了断开方式
数据库连接和内存管理自动化,这是微软的一个重大的技术突破。
但是,这并不等于说学习ADO技术就没有意义了,首先,由于技术
的继承性,ADO.NET继承了ADO的大部分编程方法,另一方面,VB.NET
也还是保留了原来在VB6.0中ADO的COM组件,这就是说,在VB.Net中,
我们还是可以用在VB6.0中完全相同的方法来编写数据库程序,这对于
中小规模的数据库管理系统,也是很有意义的。
如果您主要是处理Access数据库,那么使用专为Access数据库编写
的DAO技术将更直接效率更高。
因此,在VB.Net中也仍然保留了DAO的
COM组件,但是,更改了驱动程序,解决了在VB6.0中DAO不能驱动
Access2000的问题,因此也得到了广泛的应用。
下面,我们就来仔细的研究ADO和DAO的有关问题。
在课程的最后,
我们将通过一两个例子,来说明VB.NET中数据库处理的一些方法和特点。
第三节ADO最基本的内容
ADO的内容比较多,我想还是分两个层,先讨论最基本最重要的内
容。
一、ADO组件的引用
ADO实际上是个COM组件,它的顶层有三个对象:
Connection:
指定数据源,建立和数据源的连接;
Command:
对数据源执行指定的命令,接受SQL语句,表名,存储
过程的名字,执行SQL查询,更新数据,插入记录等;
Recordset:
来自表或命令执行结果的记录全集,操纵来自提供者
的几乎所有数据。
要应用ADO组件,必须在工程-〉引用:
MsActivexdataobject2.7Library
把ADO这个COM组件调入当前系统。
用F2可以看到这个组件的状况。
库的名字为ADODB,也就是在当初
设计组件的时候,工程名起的是是ADODB,所以,应用这三个类都要构造
相应的实例,引用时必须作如下声明,:
DimCnnAsADODB.Connection
DimCmmAsADODB.Command
DimRecoAsADODB.Recordset
其中,Cnn,Cmm和Reco是用户自定义的对象变量,为了表述方便,
后面的讨论我们都以这组名字作为表达的基础。
真正使用,就要通过New来建立一个ADO的实例。
SetCnn=NewADODB.Connection
SetCmm=NewADODB.Command
SetReco=NewADODB.Recordset
有时,希望定义的同时构造实例,也可以写成(ADODB一般可以不写):
DimCnnAsNewConnection
DimCmmAsNewCommand
DimRecoAsNewRecordset
值得指出的是,如果您直接使用ADODC控件,那上述方法都已经在
ADODC内部完成了,不需要程序员自己来写。
但是,如果您不使用ADODC
控件,而要使用ADO这个类来编写数据库系统的时候,就需要使用引
用COM的标准方法。
一、数据库连接的建立
可以有四种连接方式:
第一种(用Open)
Cnn.Provider="
驱动程序"
Cnn.Open"
数据库名"
[,"
用户名"
"
密码"
]
例
Microsoft.Jet.OLEDB.4.0"
Cnn.OpenAdd.path&
"
\奖金数据库.mdb"
这里App.path给出了当前路径(该语句在VB.NET中变为
Application.startuppath),这样就可以实现相对路径调用数
据库了。
第二种(用连接字符串)
Connection对象变量有一个Connectionstring,可以输入字符串,
例如对于sqlserver数据库,字符串设置可用如下规则:
Provider=SQLOLEDB.1;
(提供者)
IntegratedSecurity=SSPI;
(安全设置)
PersistSecurityInfo=False;
(持续的安全信息)
InitialCatalog=pubs;
(初始的目录,或默认的数据库)
DataSource=XXX-PE(数据源--计算机名)
请看如下的例子:
Cnn.DefaultDatabase="
pubs"
'
这个属性是指定默认数据库,如果没有指定数据库名,
就使用这里指定的数据库名,SQLServer通常是pubs
Cnn.Connectionstring="
driver={SQLServer};
Server=bigs;
_
uld=sa;
pws=pwd"
其中:
bigs为服务器名;
sa为用户名;
pwd为密码。
Cnn.Mode=adModeShareExclusive
以独占方式打开(后面会讨论)
Cnn.open
第三种(使用DSN数据源名)
DSN=pubs;
UID=***;
PWD=***"
由于建立DSN时就已经提供了诸如上面有关的各种数据,
所以这里只需要直接调用名字就可以了。
第四种(直接用Open打开)
DSN数据源名"
实例,第一部分,建立三个数据库的连接:
-----------------------------------------------------------------
建立三个Button,分别用三种方法打开三个库,运行时不出错就代表
已连接。
由于后面要用一个显示画面,所以一次只能打开一个数据库,看
看这里是怎么解决这个问题的?
DimCnn1AsNewConnection
DimCnn2AsNewConnection
DimKzr,Kzc,kzc1,kzc2,Nd,inname,Tname
PrivateSubCommand2_Click()
用字符串连接SQLSERVER数据库
IfKzc=TrueThenCnn.Close
Kzc=True
Ifkzc1=TrueThen
Cnn1.Close
kzc1=False
EndIf
Ifkzc2=TrueThen
Cnn2.Close
kzc2=False
Cnn.ConnectionString="
DataSource=XXX-PE"
注意一下计算机名要更改
Cnn.Open
EndSub
PrivateSubCommand1_Click()
打开数据库的Provider+Open方法
Ifkzc1=TrueThenCnn1.Close
kzc1=True
IfKzc=TrueThen
Cnn.Close
Kzc=False
Cnn1.Provider="
inname=App.Path&
Cnn1.Openinname
Tname="
奖金"
PrivateSubCommand3_Click()
直接使用OPEN和DSN数据源打开数据库
Ifkzc2=TrueThenCnn2.Close
kzc2=True
Cnn2.Open"
Mysql"
PrivateSubForm_Load()
Kzr=False
二、应用Recordset打开表
前面已经提到,Recordset对象是用于处理来自表或命令执行结果的记
录全集,操纵来自提供者的几乎所有数据,所以,处理数据库问题,Recordset
是处在重中之重的位置,由于这是个COM对象,应用的时候同样需要声明,
并且构造一个实例:
Reco.Open"
数据源"
Cnn[,指针形态][,锁定方式]
数据源:
表名,或者SQL语句
指针形态:
0向后指针(默认)
1索引键集
3动态记录(常用)
4静态记录
锁定方式:
1只读(默认)
2编辑更新
3Updata更新
4批次更新
实例:
关于Recordset的打开
-------------------------------------------------------------
在相应的按钮事件中加上Reco.Open
.............
employee"
Reco.OpenTname,Cnn,3,3
双向指针,Updata更新
Kzr=True
...............................
Reco.OpenTname,Cnn1,3,3
....................
基本表"
Reco.OpenTname,Cnn2,3,3
三、几个重要的Connection对象方法
1)open方法
语法:
Cnn.Open[Connectionstring][,UserID][,password]
注意:
Connection的Open方法是连接了数据库,但并没有打开表。
2)Close方法
关闭已经打开的连接,但该对象还保留在内存中
3)清除内存
SetCnn=Noting
真正的消除掉
四、取得记录集中的数据
Reco.("
字段名"
)
Reco.Fields(index).Value'
内容
Reco.Fields(index).Name‘字段名
Reco.Fields(index).type'
字段类型
Reco.Fields(i).ActualSize'
字段长度
Reco.Fields.Count'
字段总数
记录数
Reco.RecordCount记录数
N=Reco.AbsolutePosition'
当前指针的位置
Reco.AbsolutePosition=N'
把指针定位在第N笔记录上
五、指针的移动
Reco.MoveFirst'
指针指向第一笔记录
Reco.MoveNext'
指针指向下一笔记录
Reco.MovePrevious'
指针指向上一笔记录
Reco.MoveLast'
指针指向最后一笔记录
------------------------------------------------------------------
做一个frame用于显示,内部放置9个Textbox和Label数组。
开始的时候frame1.visible=false。
VarType()检测数据库输出是否为空(MULL),因为空数据的送
出会显示错误信息,应避免这种情况。
Showfiel()用于显示数据
Myscreen()用于设置初始屏幕
PrivateSubShowfiel()
Fori=0ToNd-1
IfVarType(Reco.Fields(i).Value)>
1Then
Text1(i).Text=Reco.Fields(i).Value
Else
Text1(i).Text="
"
Next
PrivateSubMyscreen()
Nd=Reco.Fields.Count
IfNd>
=9Then
Nd=9
Fori=0To8
Label1(i).Visible=False
Text1(i).Visible=False
Fori=0ToNd-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 数据库 应用程序