




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库操作方式:可以采用ADO方式,也可以采用oracle本身提供的Proc*C/C+或者是OCCI方式操作数据库。连接方式:可以是客户端连接、也可以是服务器端连接。数据库配置:无论是何种连接都需要进行数据库连接的配置,一般在ORACLE_HOME下面的network/admin/tnsnames.ora文件中进行配置,如果没有此目录或者是此文件,需要自己手工添加。内容格式大致如下:点击(此处)折叠或打开1. BM2D0=2. (DESCRIPTION =3. (ADDRESS_LIST =4. (ADDRESS = (PROTOCOL = TCP)(HOST =XXX.XXX.XXX.XXX)(PORT= 1521)5. )6. (CONNECT_DATA =7. (SERVICE_NAME =BM2D0)8. )9. )其中橄榄色可任意起名,一般在数据库连接是作为服务和用户名、密码一起确定数据库连接的参数。 第一个鲜粉色是远程oracle数据库所在服务器的IP地址,端口号一般为1521。 第二个鲜粉色是远程oracle所在主机的全局数据库名字,不能随意更改。 后两个搭配起来能够确定唯一连接对象。客户端连接:方式一:ADOmain.cpp点击(此处)折叠或打开1. #includeDBOperation.h2. #include3. using namespace std;4.5. void main()6. 7. CDBOperation dbOper;8. bool bConn=dbOper.ConnToDB(Provider=OraOLEDB.Oracle.1;Persist Security Info=True;Data Source=xxx1,xxx2,xxx3);9. if(false=bConn)10. 11. printf(连接数据库出现错误n);12. system(PAUSE);13. return;14. 15.16. _RecordsetPtr pRst;17.18. /执行查询语句19. /char*sql=select * from TSTUDENT;20. char sql255=0;21. strcpy(sql,select * from TSTUDENT);22. pRst=dbOper.ExecuteWithResSQL(sql);23. if(NULL=pRst)24. 25. printf(查询数据出现错误!n);26. system(PAUSE);27. return;28. 29. if(pRst-adoEOF)30. 31. pRst-Close();32. printf(There is no records in this tablen);33. return;34. 35. _variant_t vSno,vName,v*,vAge,vDno,vDname,vCname;36. while(!pRst-adoEOF)37. 38. /pRst-MoveFirst();/记录集指针移动到查询结果集的前面39. vSno=pRst-GetCollect(_variant_t(long)0);40. vName=pRst-GetCollect(_variant_t(name);41. v*=pRst-GetCollect(_variant_t(*);42. vAge=pRst-GetCollect(_variant_t(age);43. /vDno=pRst-GetCollect(dno);44. /vDname=pRst-GetCollect(dname);45. /vCname=pRst-GetCollect(cname);46.47. printf(%st%st%st%dn,(LPSTR)(LPCSTR)(_bstr_t)vSno,(LPSTR)(LPCSTR)_bstr_t(vName),(LPSTR)(LPCSTR)_bstr_t(v*),vAVal);48. pRst-MoveNext();49. 50. 51. /执行插入语句52. /sprintf(sql,insert into TSTUDENT(sno, name, *, age) values(%s, %s, %s, %d),20080016,全局,女,25);53. strcpy(sql,insert into TSTUDENT(sno, name, *, age) values(20080001, 全局, 女, 25);54. pRst=dbOper.ExecuteWithResSQL(sql);55. if(NULL!=pRst)56. 57. printf(插入数据成功n);58. 59. /执行删除语句60. 61. sprintf(sql,delete from TSTUDENT where sno = %s,20080017);62. pRst=dbOper.ExecuteWithResSQL(sql);63. if(NULL!=pRst)64. 65. printf(删除数据成功n);66. 67. system(PAUSE);68. /pRst-Close();69. 其中XXX1:是tnsnames.ora中配置的服务名,XXX2是用户名,XXX3是密码。DBOperation.h:点击(此处)折叠或打开1. #pragma once2. #importc:program filescommon filessystemadomsado15.dllno_namespace rename(EOF,adoEOF)3. classCDBOperation4. 5. public:6. /初始化数据库操作需要的对象7. CDBOperation(void);8. CDBOperation(void);9. /连接至数据库10. bool ConnToDB(char*ConnectionString,char*UserID,char*Password);11.12. /数据库操作函数13. /查询操作 删除以及添加14. _RecordsetPtr ExecuteWithResSQL(constchar*);15. /bool ExecuteNoResSQL(constchar*);/deleteandadd16.17. private:18. void PrintErrorInfo(_com_error&);19.20. private:21. /初始化数据库连接、命令、记录集22. _ConnectionPtr CreateConnPtr();23. _CommandPtr CreateCommPtr();24. _RecordsetPtr CreateRecsetPtr();25.26. private:27. /数据库连接需要的连接、命令操作对象28. _ConnectionPtr m_pConnection;29. _CommandPtr m_pCommand;30. ;DBOperation.cpp点击(此处)折叠或打开1. #includeDBOperation.h2.3. CDBOperation:CDBOperation(void)4. 5. CoInitialize(NULL);6. m_pConnection=CreateConnPtr();7. m_pCommand=CreateCommPtr();8. 9.10. CDBOperation:CDBOperation(void)11. 12. /m_pCommand-Close();13. m_pConnection-Close();14. 15.16. bool CDBOperation:ConnToDB(char*ConnectionString,char*UserID,char*Password)17. 18. if(NULL=m_pConnection)19. 20. printf(Failed to create connectionn);21. returnfalse;22. 23.24. try25. 26. HRESULT hr=m_pConnection-Open(ConnectionString,UserID,Password,NULL);27. if(TRUE=FAILED(hr)28. 29. returnfalse;30. 31. m_pCommand-ActiveConnection=m_pConnection;32. returntrue;33. 34. catch(_com_error&e)35. 36. PrintErrorInfo(e);37. returnfalse;38. 39. 40.41. _RecordsetPtr CDBOperation:ExecuteWithResSQL(constchar*sql)42. 43. /已经在连接至数据库的时候进行判断了44. /if(NULL=m_pCommand|0=m_pConnection-State)45. /46. /printf(Failed to create command OR the state of connection is zeron);47. /returnNULL;48. /49.50. /char*query=new char;51. /strcpy(query,sql);52. try53. 54. m_pCommand-CommandText=_bstr_t(sql);55. _RecordsetPtr pRst=m_pCommand-Execute(NULL,NULL,adCmdText);56. return pRst;57. /_variant_t ra;58. /_RecordsetPtr pRst=m_pConnection-Execute(_bstr_t)query,&ra,adCmdText);59. 60. catch(_com_error&e)61. 62. PrintErrorInfo(e);63. returnNULL;64. 65. 66.67. /bool CDBOperation:ExecuteNoResSQL(constchar*sql)68. /69. /if(NULL=m_pCommand|0=m_pConnection-State)70. /71. /printf();72. /73. /try74. /75. /char*query=NULL;76. /strcpy(query,sql);77. /m_pCommand-CommandText=(_bstr_t)query;78. /79. /80. /81.82. void CDBOperation:PrintErrorInfo(_com_error&e)83. 84. printf(Error infomation are as followsn);85. printf(ErrorNo: %dnError Message:%snError Source:%snError Description:%sn,e.Error(),e.ErrorMessage(),(LPCTSTR)e.Source(),(LPCTSTR)e.Description();86. 87.88. _ConnectionPtr CDBOperation:CreateConnPtr()89. 90. HRESULT hr;91. _ConnectionPtr connPtr;92. hr=connPtr.CreateInstance(_uuidof(Connection);93. if(FAILED(hr)=TRUE)94. 95. returnNULL;96. 97. return connPtr;98. 99.100. _CommandPtr CDBOperation:CreateCommPtr()101. 102. HRESULT hr;103. _CommandPtr commPtr;104. hr=commPtr.CreateInstance(_uuidof(Command);105. if(FAILED(hr)=TRUE)106. 107. returnNULL;108. 109. return commPtr;110. 111.112. _RecordsetPtr CDBOperation:CreateRecsetPtr()113. 114. HRESULT hr;115. _RecordsetPtr recsetPtr;116. hr=recsetPtr.CreateInstance(_uuidof(Command);117. if(FAILED(hr)=TRUE)118. 119. returnNULL;120. 121. return recsetPtr;122. 方式二:OCCI默认oracle安装了occi库,但是只是安装了release版本的资源,因此需要将程序配置为release模式,或者是参看/article-42057-1.html为debug模式获取必备的头文件以及库文件,本文采用的是release模式,使用默认安装的库文件以及头文件。1.修改配置属性 改为Rlease模式2.添加库文件目录 $(ORACLE_HOME)ociinclude3.添加头文件目录 $(ORACLE_HOME)ocilib4.添加库文件:oraocci10.lib应用程序:点击(此处)折叠或打开1. /代码的目的就是验证makefile中oracle的头文件和lib文件路径是否正确了2. #include3. #define WIN32COMMON /避免函数重定义错误4. #include5. using namespace std;6. using namespace oracle:occi;7. intmain()8. 9. Environment*env=Environment:createEnvironment();10. coutsuccesscreateConnection(bsm3,bsm3,BSM3);18. coutconn successterminateConnection(conn);20. 21. catch(SQLException e)22. 23. coute.what()endl;24. system(pause);25. return-1;26. 27.28. Environment:terminateEnvironment(env);29. coutend!endl;30. system(pause);31. return 0;32. 服务器端:AIX服务器方式一:OCCIhelloworld.cpp点击(此处)折叠或打开1. /代码的目的就是验证makefile中oracle的头文件和lib文件路径是否正确了2. #include3. #include4. using namespace std;5. using namespace oracle:occi;6. main()7. 8. Environment*env=Environment:createEnvironment();9. coutsuccesscreateConnection(name,pass,srvName);17. coutconn successterminateConnection(conn);19. 20. catch(SQLException e)21. 22. coute.what()endl;23. 24.25. Environment:terminateEnvironment(env);26. coutend!endl;27. Makefile:点击(此处)折叠或打开1. #2. #Makefileforthe OCCI demo programs3. #4. INC=-I$ORACLE_HOME/precomp/public-I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 押题宝典高校教师资格证之《高等教育法规》考试题库及参考答案详解(黄金题型)
- 基础强化人教版8年级数学下册《平行四边形》必考点解析试题(含答案解析版)
- 基础强化华东师大版7年级下册期末试题含答案详解【达标题】
- 2025年教育质量评估与认证体系改革与发展趋势报告
- 2025年生物科技前沿:创新药物研发靶点筛选与验证技术突破报告
- 合伙协议模板
- 2025版外籍工作人员薪资福利保障合同
- 2025年食品包装设计委托加工合同参考模板
- 2025房地产营销合作合同:海外地产项目推广方案
- 2025版夫妻债务分担与债务担保协议书下载指南
- 2025至2030年中国视频监控系统行业市场运行态势及投资战略研究报告
- GB/T 45953-2025供应链安全管理体系规范
- 2025陕西寰宇正信科技产业发展有限公司招聘(71人)笔试参考题库附答案解析
- 速冻机在果蔬加工中的应用考核试卷
- 2025年初级律师助理面试必-备题库及解析
- 增值税留抵退税培训课件
- 2025年秋季开学第一课《翻越你的浪浪山》课件
- 2025年浙江省中考科学试题卷(含答案解析)
- DB11∕T 510-2024 公共建筑节能工程施工质量验收规程
- 人教版初中九年级全册英语单词表(完整版)
- 东北地区近百年降水时间序列变化规律的小波分析_姜晓艳_图文
评论
0/150
提交评论