ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:28.58KB ,
资源ID:6639145      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6639145.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编写数据库应用程序必看.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编写数据库应用程序必看.docx

1、编写数据库应用程序必看编写数据库应用程序必看强烈推荐第一节 ODBC API 一、简介现在最流行的联接数据源的方法,是ODBC(Open Database ConnectivityAPI),字面意思是“打开数据库联接”,这是一种用C/C+ 编的应用程序接口,是属于Windows 的一部分。无论对任何一种客户/ 服务器关系型数据库接口(RDBMS), 还是目前最流行的索引顺序访问方法(ISAM)数据库(Jet,Foxpro)以及电子表格,都能找到ODBC驱动程序。使用ODBC数据源的一个最有利的优点是,只要利用ODBC联接上数据库,那么,不论何种数据库,在应用程序内的处理方法都是相同的,这就为设

2、计大型通用数据库处理程序,提供了现实的保证。ODBC是由Windows 的动态链接库(DLL) 组成的,内部提供了一系列的函数,它由两组函数组成,提供基本的数据库服务:1) 添加、配置和删除ODBC数据源:数据源是对数据库的有名联接,数据源的名字是由数据库的提供者命名的,通常称为数据源名(DSN) ,注意把数据源的名字和数据库的名字区别开来。ODBC使用Odbcinst.dll库来配置和删除数据源。而它的可执行的程序,是Odbc32.exe。它的图标位于“控制面板”窗口中(ODBC数据管理器)。2) 管理从客户前端到数据库服务器的查询语句和其它SQL 语句的通讯,并返回查询结果。数据源的ODB

3、C驱动程序将客户端送来的SQL 语句送到数据库驱动程序,数据库驱动程序处理SQL 语句后,再通过数据源的ODBC驱动程序将结果返回到应用程序。事实上,连接数据原有两种方式,一种是直接调用数据表名(Table),这种方法是把所有的表内容全部传给客户端,当表很大时,将是一种效率很差的传输方式。第二种是使用SQL 语句,它只把符合要求的内容传递下去,因此应用效率比较高,大型数据库一般都采用SQL 语句的方式。下面简单介绍一下ODBC 驱动程序。ODBC驱动程序分为单层和多层两种:单层的ODBC不能直接处理SQL 语言,它是将SQL 语句分解成一系列长的低级指令,直接操作数据库文件(Dbase、Fox

4、pro、Paradox、Excel)。多层ODBC依靠客户/服务器RDBMS来处理SQL 语句,由于服务器只传回符合SQL 条件的内容,网络流量被最小化。VB 6.0中包括SQL server 4.2X 、6.X、7.0 的32位ODBC驱动程序,即Sqlsvr32.dll,虽然列表上同样也包括Qracle 驱动程序。但是,实际使用时还是需要在客户端计算机上安装Qracle公司提供的动态联接库。二、ODBC添加新数据源方法:Windows -控制面板 -资源管理器(Windows 2000为管理工具) -ODBC数据源(32位)。打开“ODBC数据管理器”这里首先要决定的是采用“用户DSN”还

5、是“系统DSN”用户DSN: 该数据源名只提供给用该用户名登陆的用户。在网络使用时主要用于在客户端定义数据源。系统DSN: 该数据源名提供给用任何用户名登陆的用户,包括在网络上(NT)使用。添加:选择驱动程序。1)选择Access,-完成 安装:数据源名:自己给出数据库 “选择”-选择相应的数据库。确定: 我们可以在数据源列表中看到新定义的数据源名字。2)选择SQL Server -完成 建立新的数据源到SQL Server命名数据源:自己给出服务器:给出服务器名如果从列表中选择服务器名称,则不需要更多的配置。如果使用相同的计算机作为 SQL Server,可以在此服务器框中输入“(local

6、)”(本地)。然后用户可连接到 SQL Server 的本地副本,即便正在运行 SQL Server 的非网络版本。在说明框可以写进关于数据源可选的描述性说明。例如,“所有员工的工资和销售情况”。下一步使用用户登陆ID和密码的SQL Server验证输入用户名和密码下一步 -完成配置可以看出,不同的驱动程序配置方法不尽相同。后面就可以看到,使用ODBC数据源名并不是唯一的选择,我们也可以使用直接用数据库名或者服务器名(SQL Server) 联接的方式,这时,并不需要事先设置ODBC数据源的名字。第二节 DAO 和 ADO 的技术状态1994年,微软在Access 2.0 中首先引入了16位的

7、DAO (Data Accessing Object 数据访问对象),以实现和Jet 数据库引擎的连接,这是允许程序员操纵Jet 引擎的第一个面向对象的接口。DAO 提供了一个复杂的可编程数据对象的层次模型,由上到下分别是:DBEngineWorkspaceDatabaseTableDefQueryDefRecorsetDAO 的使用非常复杂,例如,为了引用 Recorset,必须从上到下逐级引用:DIM wname As DAO.WorkspaceDIM wm1 As DAO.DatabaseDIM wm2 As DAO. TableDefDIM wm3 As DAO.QueryDefDIM

8、 wm4 As DAO.Recorsetset wname=DBEngine.Workspace(0).更重要的,DAO/Jet 并不适合客户/服务器模式的数据库系统,于是,微软又开发出了RDO(Remote Data Object 远程数据对象), 和RDC 控件(在MS RemoteData Control 6.0下),解决了客户/服务器模式下,开发象SQL Server 或 Oracle 这些大型远程数据库的困难。VB提供的RDO 组件在工程-引用:客户端:MS Remote Data Object 2.0服务器端:MS Remote Data Servers 2.5 Library和M

9、S Remote Data Servers Server 2.5 Library显然,这种模式需要编写服务器端程序,在某些情况下可能是不现实的。继RDO 之后,微软又提出了全新的ADO 技术(ActiveX Data Object),ADO 是DAO 和RDO 的继承者,它基于微软提出来的OLE DB 数据访问模式,它可以处理目前几乎全部关系型数据库和非关系型数据库系统。而且,它是专门为大范围的商业数据库系统设计的,ADO 比DAO 占用内存少,所以它更适合大流量和大事务量的网络计算机系统。ADO 的影响很大,现在几乎所有的非微软开发环境都内置了ADO 驱动程序。ADO 的使用也相当方便,利用

10、ADODC 控件(在MS ADO Data Control 6.0(OLEDB)下),可以在本地计算机上获取本地和远程的数据源,并且可以立刻测试联接是否成功。ADODC 控件,是以ADO 为父类的一个子类,所以,它继承了ADO 的几乎绝大多数属性事件和方法,同时,也加入了自己的属性事件和方法。这些属性事件和方法,又大多数套用于一种原来基于DAO 的控件Data,为熟悉Data控件的程序员做一个合理的过渡,并且,加入了和数据绑定控件连接的内容。所以,同一种目的,在ADODC 中可以有两种方式解决,这样做的好处是给程序员带来了方便,更重要的,ADODC 和数据绑定控件连接非常方便,但代价是无疑降低

11、了效率。因此,尽管使用ADODC 控件处理数据库问题相当方便,但是,在更多的大型数据库系统的设计中,人们还是使用直接调用ADO 类的方式,因为这样一来,程序的效率往往更高,更灵活。鉴于这个情况,在下面的讨论中,我们两种情况都进行讨论,具体怎么用,要看项目的需要。当然首先是从源头说起,先研究ADO 。还需要说明的是:ADODC 提供了一整套的自动联接方式,这些方式,十分方便,但是,如果不明白原理,往往联接以后还是感到自己心中无数,所以,即使您使用ADODC ,但是仔细的研究ADO 本身的东西,也还是很有必要的。同时,利用ADODC 提供的信息,也给以编程为主的ADO提供了方便,这些我们后面都会加

12、以介绍。最近一两年,ADO 技术又有了长足的发展,这里首先要提到微软的Visual Studio.Net 平台,在这个平台上的主导语言是Visual Basic,Visual C+,Visual C# ,对于VB 6.0的编程人员,过渡到VB.NET是理所当然的事情。微软公司对VB升级到VB.Net的同时,对数据访问模型进行了翻天覆地的升级。把原来的ADO 模型升级为全新的ADO.NET数据源,原来最重要的RecordSet 现在消失了,取而代之的是DataSet 和DataReader,而且不再像原来RecordSet 那样一次只读取一条记录,而是读取整个数据库,然后在内存中建立一个映像,从

13、而实现了断开方式数据库连接和内存管理自动化,这是微软的一个重大的技术突破。但是,这并不等于说学习ADO 技术就没有意义了,首先,由于技术的继承性,ADO.NET 继承了ADO 的大部分编程方法,另一方面,VB.NET也还是保留了原来在VB 6.0中ADO 的COM 组件,这就是说,在VB.Net中,我们还是可以用在VB 6.0中完全相同的方法来编写数据库程序,这对于中小规模的数据库管理系统,也是很有意义的。如果您主要是处理Access数据库,那么使用专为Access数据库编写的DAO 技术将更直接效率更高。因此,在VB.Net中也仍然保留了DAO 的COM 组件,但是,更改了驱动程序,解决了在

14、VB 6.0中DAO 不能驱动Access 2000 的问题,因此也得到了广泛的应用。下面,我们就来仔细的研究ADO 和DAO 的有关问题。在课程的最后,我们将通过一两个例子,来说明VB.NET中数据库处理的一些方法和特点。 第三节 ADO 最基本的内容ADO 的内容比较多,我想还是分两个层,先讨论最基本最重要的内容。一、ADO 组件的引用 ADO 实际上是个COM 组件,它的顶层有三个对象:Connection :指定数据源,建立和数据源的连接;Command :对数据源执行指定的命令,接受SQL 语句,表名,存储过程的名字,执行SQL 查询,更新数据,插入记录等;Recordset: 来自

15、表或命令执行结果的记录全集,操纵来自提供者的几乎所有数据。要应用ADO 组件,必须在工程-引用:Ms Activex data object 2.7 Library把ADO 这个COM 组件调入当前系统。用F2 可以看到这个组件的状况。库的名字为ADODB,也就是在当初设计组件的时候,工程名起的是是ADODB,所以,应用这三个类都要构造相应的实例,引用时必须作如下声明,:Dim Cnn As ADODB.ConnectionDim Cmm As ADODB.CommandDim Reco As ADODB.Recordset其中,Cnn,Cmm和Reco 是用户自定义的对象变量,为了表述方便,

16、后面的讨论我们都以这组名字作为表达的基础。 真正使用,就要通过New 来建立一个ADO 的实例。Set Cnn = New ADODB.ConnectionSet Cmm = New ADODB.CommandSet Reco = New ADODB.Recordset有时,希望定义的同时构造实例,也可以写成(ADODB一般可以不写):Dim Cnn As New ConnectionDim Cmm As New CommandDim Reco As New Recordset值得指出的是,如果您直接使用ADODC控件,那上述方法都已经在ADODC内部完成了,不需要程序员自己来写。但是,如果您

17、不使用ADODC控件,而要使用ADO 这个类来编写数据库系统的时候,就需要使用引用COM 的标准方法。一、数据库连接的建立可以有四种连接方式:第一种(用Open)Cnn.Provider = 驱动程序Cnn.Open 数据库名,用户名,密码 例Cnn.Provider = Microsoft.Jet.OLEDB.4.0Cnn.Open Add.path & 奖金数据库.mdb 这里App.path给出了当前路径(该语句在VB.NET中变为Application.startuppath),这样就可以实现相对路径调用数据库了。 第二种(用连接字符串)Connection对象变量有一个Connect

18、ionstring,可以输入字符串,例如对于sql server数据库,字符串设置可用如下规则:Provider=SQLOLEDB.1; (提供者)Integrated Security=SSPI; (安全设置)Persist Security Info=False; (持续的安全信息)Initial Catalog=pubs; (初始的目录,或默认的数据库)Data Source=XXX-PE (数据源-计算机名)请看如下的例子:Cnn.DefaultDatabase=pubs 这个属性是指定默认数据库,如果没有指定数据库名,就使用这里指定的数据库名,SQL Server通常是pubsCnn

19、.Connectionstring=driver=SQL Server;Server=bigs; _uld=sa;pws=pwd其中:bigs为服务器名;sa为用户名;pwd为密码。Cnn.Mode=adModeShareExclusive以独占方式打开(后面会讨论)Cnn.open第三种(使用DSN 数据源名)Cnn.Connectionstring=DSN=pubs;UID=*;PWD=* 由于建立DSN 时就已经提供了诸如上面有关的各种数据,所以这里只需要直接调用名字就可以了。Cnn.open第四种(直接用Open打开)Cnn.Open DSN数据源名,用户名,密码实例,第一部分,建立三

20、个数据库的连接:-建立三个Button,分别用三种方法打开三个库,运行时不出错就代表已连接。由于后面要用一个显示画面,所以一次只能打开一个数据库,看看这里是怎么解决这个问题的?-Dim Cnn As New ConnectionDim Cmm As New CommandDim Reco As New RecordsetDim Cnn1 As New ConnectionDim Cnn2 As New ConnectionDim Kzr, Kzc, kzc1, kzc2, Nd, inname, TnamePrivate Sub Command2_Click()用字符串连接SQL SERVER

21、 数据库If Kzc = True Then Cnn.CloseKzc = TrueIf kzc1 = True ThenCnn1.Closekzc1 = FalseEnd IfIf kzc2 = True ThenCnn2.Closekzc2 = FalseEnd IfCnn.ConnectionString = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=XXX-PE注意一下计算机名要更改Cnn.OpenEnd SubPri

22、vate Sub Command1_Click()打开数据库的Provider+Open方法If kzc1 = True Then Cnn1.Closekzc1 = TrueIf Kzc = True ThenCnn.CloseKzc = FalseEnd IfIf kzc2 = True ThenCnn2.Closekzc2 = FalseEnd IfCnn1.Provider = Microsoft.Jet.OLEDB.4.0inname = App.Path & 奖金数据库.mdbCnn1.Open innameTname = 奖金End SubPrivate Sub Command3_

23、Click()直接使用OPEN 和DSN数据源打开数据库If kzc2 = True Then Cnn2.Closekzc2 = TrueIf Kzc = True ThenCnn.CloseKzc = FalseEnd IfIf kzc1 = True ThenCnn1.Closekzc1 = FalseEnd IfCnn2.Open MysqlEnd SubPrivate Sub Form_Load()Kzr = FalseKzc = Falsekzc1 = Falsekzc2 = FalseEnd Sub-二、应用Recordset打开表前面已经提到,Recordset对象是用于处理来自

24、表或命令执行结果的记录全集,操纵来自提供者的几乎所有数据,所以,处理数据库问题,Recordset是处在重中之重的位置,由于这是个COM 对象,应用的时候同样需要声明,并且构造一个实例:Dim Reco As ADODB.RecordsetSet Reco = New ADODB.RecordsetReco.Open 数据源, Cnn ,指针形态,锁定方式其中:数据源:表名,或者SQL语句指针形态:0 向后指针(默认)1 索引键集3 动态记录(常用)4 静态记录锁定方式:1 只读(默认) 2 编辑更新3 Updata更新4 批次更新实例:关于Recordset的打开-在相应的按钮事件中加上Re

25、co.Open-Private Sub Command2_Click().Tname = employeeReco.Open Tname, Cnn, 3, 3双向指针,Updata更新Kzr = TrueEnd SubPrivate Sub Command1_Click().Tname = 奖金Reco.Open Tname, Cnn1, 3, 3Kzr = TrueEnd SubPrivate Sub Command3_Click().Tname = 基本表Reco.Open Tname, Cnn2, 3, 3Kzr = TrueEnd Sub-三、几个重要的Connection对象方法1)

26、open方法语法:Cnn.Open Connectionstring,UserID,password注意:Connection的Open方法是连接了数据库,但并没有打开表。2)Close方法Cnn.Close关闭已经打开的连接,但该对象还保留在内存中3)清除内存Set Cnn=Noting真正的消除掉四、取得记录集中的数据Reco.(字段名)Reco.Fields(index).Value 内容Reco.Fields(index).Name 字段名Reco.Fields(index).type 字段类型Reco.Fields(i).ActualSize 字段长度Reco.Fields.Coun

27、t 字段总数记录数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),因为空数据的送出会显

28、示错误信息,应避免这种情况。Showfiel()用于显示数据Myscreen()用于设置初始屏幕 -Private Sub Showfiel()For i = 0 To Nd - 1If VarType(Reco.Fields(i).Value) 1 ThenText1(i).Text = Reco.Fields(i).ValueElseText1(i).Text = End IfNextEnd SubPrivate Sub Myscreen()Nd = Reco.Fields.CountIf Nd = 9 ThenNd = 9End IfFor i = 0 To 8Label1(i).Visible = FalseText1(i).Visible = FalseNextFor i = 0 To Nd -

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1