j2ee or javaseE 项目中如何连接使用本机的数据库

VC++中连接Oracle数据库的几种方法93
上亿文档资料,等你来发现
VC++中连接Oracle数据库的几种方法93
电脑编程技巧与维护;VC++中连接Oracle数据库的几种方法;周计成,章立,刘晓林;(78179部队,成都610000);摘要:介绍了vc++平台下连接Oracle数据库;MethodsofConnecting;ZHOU;to;OracleDatabaseinVC++;610000);Jieh郫.ZHANGLi.LIUⅪ舶lin;(78179Army;Ab
电脑编程技巧与维护VC++中连接Oracle数据库的几种方法周计成,章立,刘晓林(78179部队,成都610000)摘要:介绍了vc++平台下连接Oracle数据库的几种主要方法,同时给出了具体的使用步骤和示例。对这几种方法的特点进行了分析,比较了它们的优点和应用范围。关键词:VC++;Oracle数据库开发;ADO;OCI;Pro*CMethodsofConnectingZHOUtoOracleDatabaseinVC++610000)Jieh郫.ZHANGLi.LIUⅪ舶lin(78179Army。ChengduAbstract:ThispaperintroducesthemainmethodsofconnectingtooracleinVC++platform.Alsowegivepracticalusageandexamples.Weanalyzecharacteristicsofthosemethodsandcomparetheiradvantageand印pheafionbruits.Keywords:VC++;DevelopmentofOracle;ADO;OCI;Pro‘C1引言Oracle数据库是一种广泛使用的数据库系统,它的功能强ADO库包含3个基本接口:_ConnectionPtr接口、._Corn-mandPtr接口和_RecordsetPtr接口。与数据库的连接就是用_ConnecfionPtr接口,它的连接字符串可以是自己直接写,也可以指向一个0DBCDSN。在本例中用户名和密码都是test,数据库名是myoracle。下面是示例代码:_ConnectionPtr大,具有良好的性能和较高的安全保密性,提供了与高级语言配合的专用接口,可以使用主流的开发工具快速开发,同时支持C/S和B/S工作模式,因而被大量用到信息系统的开发中。Microsoft提供了许多相关组件支持数据库的访问,Oracle公司也提供了Oracle数据库应用程序的开发接口。在Visualc++下连接Oracle库主要有3种方法。一种方法是利用VisualC++提供的多种数据库访问技术,如ActiveX数据对象ADO、开放数据库连接ODBC、数据存取对象DAO、对象连接和嵌入数据库OLEDB等。另一种方法是在VisualC++中嵌入SQL语句,文中指Pm*C/C++(简称PROC)。第三种方法是使用Oracle公司提供的底层接口开发工具OCI。22.1m_pConnection;_RecordsetPtrm_pRecordset;,,初始化cOM,创建ADO连接AfxOlelnit0;m_pConnecfion.CreateInstance(.__uuidof(Connection));姆,腱立数据库连接{rn_pConncction.CreatelnstancempConnection->OpenrLuuidof(Connection));Provider--OraOLEDB.Oracle.1;Source=myoracle;PersistSecu??Password=test;UserID=test;DatarityVC++连接Oracle数据库的方法ADO连接Oracle用ADO连接数据库的一般步骤如下:(1)用#import指令引入ADO类型库在stdafx.h中加人如下语句:Info=Tme”Itll,””,adModeUnknown);】catch(_corn_errorfCStringerrormessage;e1errormessage.FormatC数据库连接失败!hSn错误信#import”c:programfiles、commonfilesksystemXadoXtnsa-d015.dll”nonamespacerename(”EOF”,”adoEOF”)息:%s”,e.ErrorMessage());AfxMessageBox(errormessage):)2.2它的作用是编译的时候系统会生成msadol5.dh和adol5.tli两个c++头文件来定义ADO库。在具体的开发环境中llisa―d015.dll不一定在这个目录下,可按实际情况修改该文件的路径。(2)初始化OLE/COM库环境ADO库是一组cOM动态库,应用程序在调用ADO前,必须初始化OLE/COM库环境。在MFC应用程序里,可以在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境。(3)在VC++中用ADO连接oracle的示例一60一OCI连接OracleOracle专门为C++提供了连接的接口OCI,它是Oracle公司提供的开发基于Oracle数据库应用程序的底层接口,全面支持Oracle的面向对象技术,具有速度快、支持第三代编程语言、对Oracle数据库的控制功能强等优点。OCI接口支持作者简介:周计成(1982一),男,助理工程师,硕士,研究方向:数据库;章立,男,工程师,硕士;刘晓林,男,助理工程师,硕士。收稿日期:2010--08―18万方数据DATABASEANDINFORMATIONMANAGEMENTWindows系列操作系统,它所支持的c语言编译器包括Bo卜landc++和MicrosoftVisualC++等。在使用OCI开发Oracle数据库应用程序之前,应首先安装这些操作系统和c语言编译工具。通过OCI连接数据库的步骤如下代码所示:(1)定义OCI句柄pubfic:OCIEnv‘envhp;OCIServer*srvhp;OCISvcCtx奉svchp;OCIError+errhp;OCISession+authp;OCIStmt*stmthp;OCIDescribe*dschp;(2)分配句柄OCIEnvlnit(&envhp,OCI_DEFAULT,0,O)砌始化环境变量:OCIHandleAUoc(envhp,(void**)&srvhp,OCI_I-ITYPE_SERVER,0,0);,/分配服务句柄OCIHandleAlloc(envhp,(void料)&svchp,OCI―HTYPE_SVCCTX,0,0);,/分配环境句柄OCIHandleAlloc(envhp,(void掌+)&authp,OCI_HTYPE_SESSION,0,O);//分配会话句柄OCIHandleAUoc((dvoid*)envhp,(dvoid**)&dschp。OCI_HTYPE_DESCRIBE,0,0);,,分配描述句柄OCIHandleAiloe((dvoid*)envhp,(dvoid+宰)&stmthp,OCI_HTYPE_STMT,0,0);,/分配语句句柄OCIHandleAlloc(cnvhp,(void+4)&errhp,OCIHTYPE_ERROR,0,0)∥分配错误句柄(3)连接数据库在本例中mstrDBName为数据库名,m_strDBName为用户名,mstrPWD为用户密码。status--OCIServerAttaeh(srvhp,errhp,(unsignedchar母)(LPCTSTR)m_strDBNamc,(sb4)strlen(m_strDBName),OCI_DEFAULT);ErrorPro(errhp,OCIAttrSet(authp,OCIJrrYPE_SESSION,(void*)(LPCTSTR)m_strDBNalne,(ub4)strlen(m_strUserName),OCLATIR_USERNAME,errhp));ErrorPro(errhp,OCIAtu-Set(authp,OCI_HTYPE_SESSION,(void*)(LPCTSTR)m_strPWD,(ub4)mien(mstrP-WD)。OCI_ATTR_PASSWORD,errhp));status=OCISessionBegin(svchp,errhp,authp,oci_cRED_RDBMS,OCI_DEFAULT);if(status[卸1return;elseAfxMessageBox(”成功地连接到了服务器”);2.3PROC方式连接OraclePROC是Oracle公司提供的在第三代高级程序设计语言中嵌入SQL语句来访问数据库的一套预编译程序。利用Oracle公司提供的工具生成高级语言格式的源程序,然后就可以将这些源程序加入用户的程序中,开发出满足各种复杂要求的优化应用程序,具有较高的执行效率。万方数据数据库与信息管理PROC在VC下开发Oracle库接口时,需要用到如下文件:(1)PROC的可执行文件PROCUI.EXE用Orach_HOME代表Oracle安装后的根目录,当其以缺省方式安装在计算机的D盘时,则Oracle_HOME位置是D:、Oracle。PROC的可执行文件在Oracle_HOME、Ora81、BIN、PROCUI.EXE。(2)Oracle支持SQL在Vc环境的库文件OraSQL8.LIBOraSQL8.LIB文件在Oracle_HOME、OraSl、PRECOMP|LIB|MSVC|OraSQL8.LIB。(3)Oracle支持SQL在VC环境的头文件头文件木.h在Oracle_HOME、Ora81、PRECOMP、PUB―UC、?.h。为了方便完成用PROC在VC下开发Oracle库接口,通常将PROC集成到Visualc++6.0环境中,直接在c,c++环境中使用PROC预编译器来预编译应用程序,然后进行编译和链接,最终生成可执行程序。下面是PROC在VisualC++环境下连接Oracle数据库的方法。voidconnect0fEXECSQLBEGINDECLARESECTION;struct{unsignedshortlen;unsignedcharall"【20】;}usemame;struct{unsignedshortfen;unsignedcharalr【10】;lpassword;structIunsignedshortlen;unsignedchararf【lO];)server;EXECSQLENDDECLARESECTION;pfinffC、n输入用户名:”);gets(usemame.art);usemame.1en=(unsignedshort)strlen((char堆)user-nan坨.art):prinff(”、n输入口令:”);gets(password.art);password.1en=(unsignedshort)strIen((char宰)pass-word.art);rmff(”、n输入服务器名:”);gets(server.art);server.1en=(unsignedshort)s拄len((char+)server.art);,,连接到Oracle服务器上EXECSQLCONNF_L,"llsernameIDENTIFIEDBY:passwordUSING:server;研n仃(”、n用户%s成功地连接到了服务器%s上!、n”,username.amserver.air);}3三种方法的比较比较这3种方式,ADO因为是通用技术,开发起来比较容易,通用技术的速度太慢,如果我们要开发管理海量数据的数据库,比如影像数据库就无法胜任。OCI是一种底层接口,开发起来难度大一些,但是它的速度极快,几乎可以操(下转到98页)一61―电脑编程技巧与维护即为有效请求之后,对该请求进行分析。得到请求的具体内容。然后转化为结构化查询语言SQL语句,送人数据库系统,更新数据库信息。本系统主要用SQLServer数据库实现,SQLServer具有以下特性:高可用性:SQLServer2005的失败转移集群和数据库镜像技术确保企业向员工、客户和合作伙伴提交高度可靠和可用的应用系统。管理工具:SQLServer2005引进了一套集成的管理下具和管理应用编程接口(APIs),以提供易用性、可管理性、及发布时间、发布者、发布时间)o他人完成信息(名称、姓名,密码、权限、完成情况、发布时间、发布者、发布时间)。4结语经过对需求的详细调研,确定了税务目标考核涉及的内容,包括数据库设计、界面设计、Web应用层设计等,是一个具有实际应用意义的典型设计。本系统采用Browser/Server体系结构,使系统具有很好的可维护性和可重用性。使代码容易管理,适合于此类型项目的开发。使用数据库连接池技术加快与数据库服务器之间的数据处理速度,也加快对客户机层的响应速度。后台数据库采用的SQLServer。它功能比较灵活,除了可以处理包含在各种平台上运行的数据库管理系统内核之外,还包括J’数据复制、数据库系统管理、Intemet网关支持、在线分析处理、多媒体支持和各种并行处理能力。.!‘§=I£―^-j:上对大型SQLServer配置的支持。安全性增强:SQLServer2005旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。3.3逻辑结构当E―R图向关系模型转换时对管理员的关系模型与一般人员信息关系模型进行r合并,因为管理员是包含在一般人员信息关系表中的一小部分,而且每个人员登录系统同样需要管理员所应该有的信息(用户名、密码),只是具有的权限不同,所执行的操作就有很大的不同。转换后的关系模型如下所示:修哼x陬【l】【美jKenMilbum?PhotoshopElements2:Theence?北京:GeneHirshMcGraw―Hiu,2003?【2】[美】哈特(Hart?C),等,张楚雄,高猛?ASP?NET2.0入门经典.第4版.北京:清华大学出版社,2006.[31[美】DickOliver,MichaelMorrison,著,陈秋萍,译?CompleteRefer-班干部(帐-q-、人员姓名、人员权限、人员任务、发布班主任(帐号、班主任姓名、权限、班主任任务、发布者、发布时间)。教务处(帐号、教务人员姓名、权限、教务人物、发布者、发布时间)。本人任务(名称、内容、发布时间、发布者、发布时间)。他人任务(名称、内容、发布时间、发布者、发布时间)。他人任务下达(名称、任务信息、对他人下达的内容、对所要下达的人员名单、发布者、发布时间)。本人完成信息(名称、需要完成的任务信息、完成情况、者、发布时间)。HTML与CSS入门经典.第7版.北京:人民邮电出版社,2007?【4】孟宪会.ASP.NET2.0应用开发技术.北京:人民邮电出版社,2006?[5】路川,胡欣杰,何楚林.SQLServer电子工业出版社,2006.lOgDBA宝典.北京:【6】吴晨,张亮,张静.ASP.NET+SQLSe州er数据库开发与实例.北京:清华大学出版社,2006?【7】盖国强.深入浅出SQLServer-一DBAAVJ、进阶与诊断案例.北京:人民邮电出版社,2006.留吣毋茸吣辨茸耻窖塌风牙磅萍留岣蝴孕苫M附牙弛皋牙岫蝴寥辑搴撰撰留电鼢学她苒辑寥努弛芦鹕鹞祭留昀孵裤牙吨¥g屿皋牙砭附茸啦鼢蓼窖吣奉留弛皋窖塌鞋簪域羚搴弛黔(上接第61页)纵Oracle数据库的任何对象。使用PROC进行数据库开发效率高,但要求对Oracle数据库的运行机制十分了解。3.1数据访问应用程序接口特性3.3性能特性PROC运行速度最快,其次是OCI,最后是ADO。因为,ADO与PROC相比,应用程序需要经过两层才能和数据库通信接口建立联系,执行效率相对较低。OCI在开放性、可视化、Oracle的连接能力方面比较好,但只适用于Oracle数据库。ADO方法由于有MFC强大的类库支持,熟悉VC编程时则实现方便,且可移植性强。PROC支持嵌入PI/SQL块直接调用Oracle库,将过程化语言和非过程化语言相结合,适合熟悉Oracle数据库本身的技术人员使用。参考文献[1】OracleDocumentationLibrary(Release8).【2】杨培章,马东洋,陶治字,等.OCI接口简介及其在Vc++3.2技术特性比较OCI和ADO在编程上采用而向对象技术,在和Oracle连接时通过调用OracleOCI类型库来实现,应用程序在封装性、继承性和程序的再利用方面存在优势。而PROC属结构化编中的应用(JJ.电脑编程技术与维护,2003.【3】Micmsoft.MSDNLibraryVisualStudio6.0.http://www.micmsoft.corn/china/developer,2005.【4】张晓林,吴斌,晁阳.Oracle数据库开发基础教程【M】.清华大学出版社,2009.程语言,它直接调用OracleSQLLib来实现和数据库的连接,但用PROC开发出的应用程序无法向异构数据库平台移植。一98―万方数据VC++中连接Oracle数据库的几种方法作者:作者单位:刊名:英文刊名:年,卷(期):周计成, 章立, 刘晓林, ZHOU Jicheng, ZHANG Li, LIU Xiaolin78179部队,成都,610000电脑编程技巧与维护COMPUTER PROGRAMMING SKILLS & MAINTENANCE2010(20) 参考文献(4条) 1.张晓林;吴斌;晁阳 Oracle数据库开发基础教程 20092.Microsoft MSDN Library Visual Studio 6.0 20053.杨培章;马东洋;陶治宇 OCI接口简介及其在VC++中的应用[期刊论文]-电脑编程技巧与维护 .Oracle Documentation Library(Release 8 本文链接:http://d..cn/Periodical_dnbcjqywh.aspx包含各类专业文献、行业资料、专业论文、中学教育、幼儿教育、小学教育、应用写作文书、生活休闲娱乐、外语学习资料、VC++中连接Oracle数据库的几种方法93等内容。
  【】 
您可在本站搜索以下内容:
  VC++和Oracle数据库的三种连接方式_IT/计算机_专业资料。adadasd1、VC++采用 OO4O 方式连接 Oracle 数据库 COM(Component Object Model)是微软在基于 Window ...
  剖析VC_与Oracle数据库连... 3页 免费数据库ORACLE 与VC++的链接...
  VC++连接 Oracle技术详解_IT/计算机_专业资料。攻克技术难题操作数据库技术详细利用PROC,在Visual C++环境下开发数据库程序的方法 Visual C++6.0 和Oracleqi版为...
q  VC远程连接Oracle数据库方法_计算机软件及应用_IT/计算机_专业资料。我找了两天找的方法,适合初学者,亲测远程连接oracle成功!!VC 远程连接 Oracle 数据库方法目标...
  VC++连接数据库方法VC++连接数据库方法隐藏&& 一、创建对话框应用程序 二、编辑对话框资源 控件 ID 及标题 连接 ORACLE 数据库 IDC_QUERY 查询 三、添加变量...
  vc+oracle_IT/计算机_专业资料。详解vc++6.0与oracle的链接、操作方法用VC 开发 Oracle 数据库应用程序 Oracle 公司于 1qq7 年推出的 Oracle 8 数据库以其...
  VC++使用ADO连接Oracle之一_计算机软件及应用_IT/计算机_专业资料。oracle创建数据库过程。VC++使用 ADO 连接 Oracle 之一一、新建 Oracle 数据库 ,使用图形化...
  C++中用ODBC和ADO方式数... 31页 免费 VC++与ADO对数据库的链接... 8页...另外,如果是在 MS SQL 或 Oracle 等大型数据库上编程,还要能熟练使 用 SQL ...
  vc环境下C连接oracle 隐藏&& 概述 在 visual c++下开发 oracle 库接口主要有两种方法。一种方法是利用 visual c++提供的多 种数据库访问技术,如开放数据库连接...
赞助商链接
别人正在看什么?
赞助商链接【论文】JavaSE6.0的Derby嵌入式数据库_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
中国最大最早的专业内容网站00.0浏览总量总评分
评价文档:
&购买后可评价
4页¥2.005页¥2.004页¥2.003页¥1.004页¥2.00 3页¥2.002页¥1.006页¥2.002页¥1.004页¥2.00
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。
JavaSE6.0的Derby嵌入式数据库本​文​详​细​介​绍​了​如​何​利​用​J​a​v​a​S​E.中​自​带​的​D​e​r​b​y​嵌​入​式​数​据​库​开​发​小​型​数​据​库​应​用​的​全​过​程​。​通​过​结​合​实​际​案​例​,​讲​解​了​如​何​在​J​a​v​a​应​用​中​以​嵌​入​式​方​式​连​接​D​e​r​b​y​数​据​库​,​以​及​创​建​表​,​添​加​、​删​除​、​修​改​、​查​询​记​录​的​方​法​,​同​时​还​介​绍​了​一​些​在​J​a​v​a​中​进​行​数​据​库​开​发​的​小​技​巧​。
试读已结束,如果需要继续阅读或下载,敬请购买
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢
同期刊文献数据库的左外连接连接和右外连接_javase吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:3,017贴子:
数据库的左外连接连接和右外连接收藏
外连接: 要把不匹配的记录也要找出来()会使用一方表中的所有记录去和另一表中的记录按条件匹配,空值也会匹配,这个表中的所有记录都会显示,数据库会模拟出记录去和那些不匹配的记录匹配。语法:左外连接:outer join:from&& t1&& left&& join&& t2on&& t1.c1=t2.c2右外连接:from&& t1&& right&& join&& t2on&& t1.c1=t2.c2对于外连接(left)时,t1必须做驱动表对于外连接 (right) ,t2做驱动表没有匹配记录的,会依然补一个null,然后将其放入结果集中外连接的结果集包含内连接,他的结果集是内连接的结果集+匹配不上的记录
一、左外连接:在这里e表是驱动表,m表是匹配表,将前面的e表(驱动表)中所有列全都显示出来如果换成(+)形式的写法,(+)放在匹配表一方,是要将驱动表中的所有记录全都列出来&& select e.first_name employee, m.first_name manager&&&& from s_emp e left join s_emp m&&&& on e.manager_id = m.id1&& select e.first_name employee, m.first_name manager&&2&& from s_emp e , s_emp m&&3&& where&& e.manager_id = m.id(+);
二、右外连接:1&& select e.ename,e.deptno,d.deptno&&2&& from emp e right join dept d&&3* on e.deptno = d.d是驱动表,e是匹配表,将d表(驱动表)的所有记录全都显示出来select e.ename,e.deptno,d.deptnofrom emp e,dept dwhere e.deptno(+)=d.在这里d表是驱动表,在匹配表后面加(+)d是驱动表,e是匹配表,将d表(驱动表)的所有记录全都显示出来匹配前过滤?匹配后过滤?如果加and e.ename(+)='SMITH'select d.dnamefrom emp e,dept dwhere e.deptno(+)=d.deptnoand e.ename(+)='SMITH'and e.这两个过滤条件,如果有(+)在连接前做,没有的在连接后做,相对于where内连接:匹配外连接用来解决什么问题?与不匹配有关系的时候就想到外连接总结:右外连接使用right join 。。。on,(+)放在=的左边左外连接使用 left join。。。on,(+)放在=的右边
三、外连接+where&&& is null,解决的是空记录的问题,因为,有的时候,我们就是要使用空的这条记录1&& select e.ename,e.deptno,d.deptno&&2&& from emp e right join dept d 3&& on e.deptno = d.deptno&&4* where e.empno is null注意:4* where e.empno is null,一定是匹配表中的字段例:右外连接查询员工和领导 1&& select e.first_name,m.first_name&&2&& from s_emp e right join s_emp m&&3* on e.manager_id = m.id
隐式数据转换:SQL& select first_name,nvl(manager_id,'Boss')&&2&& from s_select first_name,nvl(manager_id,'Boss');//会报错,因为隐式数据转换,boss不能被转为数字,所有要:1&& select first_name,coalesce(to_char(manager_id),'Boss') 2* from s_emp使用to_char来显示转换将Carmen的manger的名字用boss填充1&& select e.first_name employee, nvl(m.first_name,'Boss') manager&&2&& from s_emp e left join s_emp m&&3* on e.manager_id = m.id
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
使用签名档&&
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 j2ee or javase 的文章

 

随机推荐