下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Visual C+中的开放数据库毗邻妙技(1)摘要DB(penDataBasennetivity,开放数据库毗邻)供应了一组利用步伐挪用接心战一套运转支撑状况,利用步伐可以利用尺度的函数停顿数据库独霸,而出必要闭心数据源去自于何种数据库办理系统(DBS),只需有响应的驱动步伐便可。本文介绍了DB的运转机造,侧重会商了Visual+1.5下利用F停顿DB编程的要发。1、开放数据库毗邻DB(penDataBasennetivity,开放数据库毗邻)是微硬开放效劳构造中有闭数据库的一个构成部门。它创立了一组范例,并供应了一组利用步伐挪用接心。用多么一组接心创立的利用步伐,对数据库的独霸没有依好于任何
2、数据库办理系统,没有间接与任何DBS挨交讲,由此可真现利用步伐对差异DBS的同享。数据库独霸的“数据源对利用步伐是通明的,部分的数据库独霸由对应DBS的DB驱动步伐(DBDriver)完成。有了DB驱动步伐,数据源便变得非常广泛,它可以是本机的某种数据库格局的文件(如本机DS目录下的Aess文件*.db),也可以是少途数据库文件(如irsftSQLServer);它可以是如古的某种DBS格局,也可以是一种齐新的数据库格局。总之,它与决于供应了甚么数据库范例的驱动步伐。Visual+中的DB慌张是真现基于inds的闭连数据库的利用的同享。2、DB办理器正在DB中,数据源是一个慌张的没有俗观面,它
3、是数据库地位战数据库范例等毗邻疑息的总战。数据源正在利用前必需经由过程DB办理器(Adinistratr)停顿登录。正在登录数据源时,要弄浑数据源名(Datasurenae)、数据库文件名(Databasenae)战数据表格名(Tablenae)那三者的没有俗观面战互相闭连:数据源真践是一种数据毗邻的笼统,数据源名是登录时给以的“毗邻的称号,以供应用步伐利用,至于该数据源下毗邻包罗多少个数据表格(table)战其他内容。正在闭连09A05900.GIF;图1DB层次闭连图数据库中,数据是以两维表格的要发存正在于数据库文件中,利用步伐最终的独霸目的即是那些表格中的止(r记载)战列(luns字段)
4、数据。塞责fxpr数据源,数据库文件名是“途径名,而该途径下的部分数据文件(*.dbf)皆属于该“数据库文件名下的数据表格(table)。DB办理器被拆正在ntrlPanel里(DBINST.PL)。经由过程该东西可以删减、建正或删除数据源,也用去删减、删除DB驱动步伐,DB办理器把数据源战它们的毗邻疑息保存需要同享利用步伐时,只需按新的数据文件的范例战地位从头登录便可。3、DB利用步伐接心DBAPI是一组尺度的DB函数库,除一样平常的数据库独霸函数中,借包罗一组函数(如SQLExe或SQLExediret)可以年夜要内嵌尺度SQL查询语句。SQL(StruturedQueryLanguage
5、构造化查询语止)是一种存与闭连型数据库的尺度语止,可以年夜要定义、查询、建正战独霸数据,简朴的语句可以年夜要做用于全部数据表格,具有很强的成效。同inds3.1SDK中API相似,DBAPI也是基于句柄(handle)停顿独霸的。API函数按成效可分为以下几类:数据源毗邻函数,设置/猎与有闭疑息的函数;筹办/提交尝试SQL查询语句的函数战获得数据的函数;防止函数战非常处置惩奖函数。上述函数的依次也表示了停顿数据库独霸的一样平常依次。两个题目成绩需要特别阐发,一是数据范例题目成绩:数据源中的数据所具有的数据范例称为SQL数据范例,那些数据范例正在其数据源中年夜要比力特别,出必要然战DBSQL数据
6、范例存储要发齐整,驱动步伐把那些数据范例同DBSQL数据范例停顿互相转换,每个DBSQL数据范例皆相称于一个DB语止数据范例;两是函数的挪用级别题目成绩,其真没有是每个DB驱动步伐皆支撑部分的DBAPI函数挪用,正在利用步伐中,可以挪用有闭函数猎与驱动步伐以支撑层次圆里的疑息。4、DB利用编程正在Visual+中,F(irsftFundatinlass根底类库)是经过对inds利用步伐中各个部件停顿类的笼统而创立的一组预定义的类,如窗心基类(nd)、各种窗心派死类等等,那些类正在利用步伐中可间接利用,没有需要从头定义。正在F中,也为DB预定义了几个类,其中慌张的是数据库类(Database)战
7、记载靠拢类(Reredset)。那两个类既有联络又有区分,正在利用步伐中,可以别离利用,也可以同时利用,每类也可以同时存正在多个东西。Database的每个东西代表了一个数据源的毗邻,Rerdset的每个东西代表了从一个数据表中按预定的查询前提获得的记载的靠拢,一样平常讲去,前者相宜于对数据源下的某个数据表格停顿集体独霸,后者用于对所选的记载靠拢停顿处置惩奖。同inds类与SDKAPI函数的闭连一样,Database类与DBAPI函数也有相似的闭连,但Database类中其真没有包罗部分的DBAPI函数,年夜部门独霸成效仍须间接挪用DBAPI函数,如目录成效函数,用于获得数据源下的数据表格疑息
8、,如表格名,字段名等。正在利用编程时,一样平常利用Database战Rerdset的派死类。假定派死类别离为Userdb战Userset,而正在利用类Userlass中,利用了一个Userdb东西(-db)战一个userset东西(-reset),图2给出了用户利用类与DB类的互相闭连表示图。09A05901.GIF;图2DatabaseRerdset类与利用类及数据源闭连图1.-db毗邻数据源-db正在完成定义构造后,要挪用Database的翻开(pen)函数以停顿数据源的真践毗邻:-db.pen(lpszDSN,bExlusive,bReadnly,lpsznnet);翻开函数需要输进四个
9、参数。lpszDSN:要毗邻的数据源的名字,假设lpszDSN=NULL且lpsznnet中也出有指明数据源名,那么该挪用会主动呈现一个对话框列出部分可用的数据源(名),让用户挑选。bExlusive:只支撑“假(False)值,表示为同享(share)要发毗邻。果而,利用步伐正在运转前,必然独霸要发是“只读借是可以建正。lpsznnet:指明毗邻字符串,包罗数据源名、用户标识码、心令等疑息。该字符串必需以“DB;开首,表示该毗邻是与一个DB数据源的毗邻(考虑当前版本支撑非DB数据源)。-db翻开后,其指针可以传给-reset做为其数据源。-db封闭后,将封闭部分Rerdset对它的毗邻,-d
10、b也可以从头翻开。2.-db独霸数据数据源翻开后,便可对数据库文件中的数据表格停顿独霸,独霸以挪用SQL语句要发停顿,可间接经由过程DBAPI函数,年夜要Database类成员函数ExeuteSQL。数据表名正在SQL语句中指定,以下语句那么正在所正在的数据源中的lerk表中插进一个记载,记载的nae字段值为hen。-db.ExeuteSQL(insertintlerk(nae)value(hen);3.-reset毗邻数据-reset正在构造时,可传进一个Database东西指针,做为-reset的数据源,当为NULL时,必需重载Rerdset的函数GetDefaultnnet,以供应数据源
11、毗邻字符串(相称于-db.pen中的lpsznnet)。以下那么表示毗邻名为PANY的数据源(当传进了开法的Database东西指针时,该函数将没有被挪用)。StringUserset:GetDefaultnnet()returnDB;DSN=PANY;4.-reset拔与记载战字段-reset正在挪用翻开函数时,即获得了切开前提的一组记载,前提语句正在pen函数中的lpszSQL中给出,假设lpszSQL为NULL,那么必需重载Rerdset的函数以供应该语句。该语句是一个SELET语句,带或没有带here战rderby子句(假设没有带,here战rderby的前提也可正在Rerdset的两
12、个预定义成员变量-strFilter战-strSrt中给出)。lpszSQL也可以只是一个数据表名(table-nae),也可以是对内嵌正在数据库文件中的查询步伐的挪用语句。所挑选的一系列字段名,正在成员函数DFieldExhange中由一系列RFX-函数指定。RFX-(RerdFieldExhange)函数,使字段战成员变量一一创立范例对应闭连。其中,-strFilter中也可以带变量参数(用?表示,如fieldl=?ANDfield2=?),参数与成员变量的对应闭连也正在DFieldExhange中由RFX-函数指定(串中的?将被参数变量值一一互换)。vidUserset:DFieldEx
13、hange(FieldExhange*pFX)pFX-SetFieldType(FieldExhange:utputlun);/*以下为字段毗邻*/RFX-?(pFX,field1,-var1);RFX-?(pFX,field2,-var2);.RFX-?(pFX,fieldn,-varn);pFX-SetFieldType(FieldExhange:para);/*以下为参数毗邻*/RFX-?(pFX,field1,-para1);RFX-?(pFX,field2,-para2);.其中,?为DBSQL数据范例名,如RFX-Duble,RFX-Text等。综开上述,拔与记载战字段真践是由以下
14、语句完成:SELETrfx-field-listFRtable-naeHERE-strFilterRDERBY-strSrt字段变量战参数变量的个数必然要正在挪用翻开函数前(如构造函数中)准确天赋值给成员变量-nFields战-nParas。-reset正在翻开后的任何工夫挪用Requery()函数,将按照新的查询前提(例如建正了参数变量值)从头拔与记载。5.-reset独霸数据记载靠拢天死后,其当前记载的各字段值被保存正在前述的各字段变量中,假设挪用Rerdset的动弹(srll)函数,如veFirst(),veNext(),vePrev(),veLast()等,字段变量的值将主动跟从“当前
15、记载的地位的变革而变革。IsBF(),IsEF()用于分辨能可挪动到记载的头或尾。数据独霸慌张包罗删除(Delete),增减(AddNe)战变动(Edit),一样平常流程为:if(-reset.anUpdate()/*能可答应建正*/if(-db.anTransat()/*能可支撑“批处置惩奖*/-db.BeginTrans();-reset.AddNe();/*建正字段变量值*/.-reset.Update();-db.itTrans();if(atherrr)-db.RllBak();塞责AddNe战Edit,建正字段变量后必然要挪用函数Update(),没有然更新将丧得,而Delete独
16、霸那么出必要停顿字段值建正战挪用Update()。上述的Database的四个函数是DB为包管数据独霸的牢靠性而供应的“批处置惩奖函数,即正在BeginTrans战itTrans之间的数据建正假设呈现任何非常,可经由过程函数RlBak去光复所做的建正。正在多用户系统利用时,每个数据源可以被多个用户的多个使命毗邻,差异的使命可同时建正相似的数据源。DB供应了两种数据表更新的同步机造(正在-reset.pen函数中指定),“静态的(snapsht)战静态的(dynaset)。前者是一组静态的记载靠拢,当创立后没有会改动,除反响本人的增减/删除中,没有反响其中用户的建正,除非挪用了Requery从头创立。后者是一组静态的记载靠拢,本人或其中用户所做的建正随
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度城市供水供电供气合同3篇
- 2024年度房屋买卖合同:购房人与开发商就房屋买卖所签订的合同3篇
- 2024年企业贷款合同模板一
- 2024全新运输快递合同下载
- 2024年新能源汽车电池技术转让合同
- 2024年国际物流运输服务协议版
- 石家庄医学院新校区建设合同三篇
- 2024企业融资合同
- 2024专业猎头服务招聘合作合同版
- 2024年度人工智能语音助手技术开发与授权合同3篇
- 国企招聘台州玉环市部分国有企业招聘考试真题2023
- 11《百年孤独(节选)》课件高中语文选择性必修上册
- 手术室手术衣
- 砂石料加工场成本控制专项方案
- GB/T 26342-2024国际间遗体转运棺柩
- 2020-2024年上海市春考语文真题试卷汇编含答案
- 高中体育教学教案30篇
- 公文写作培训
- 安全生产法律法规和标准规范管理制度
- 全媒体运营师试题库(含答案)
- 24秋 默写通关训练 语文五年级上册
评论
0/150
提交评论