C++使用ocilib访问oracle数据库
引用: http://blog.csdn.net/u011311985/article/details/51221898
测试程序我放到 http://download.csdn.NET/detail/u011311985/9499596这个地址中了,有需要的朋友可以下载
一、下载客户端驱动说明
参考网址:
使用ocilib;
http://wenku.baidu.com/link?url=9pHYVD-MEq00_a0E80gzm3fHf7pICM0KsWrrgYAqlnKLpl2OlKnAo5qKM3qtK-oMg1XvcMYfJeciuomYSFDFywDNsyT1O6WfXFQ-Zi3j6zy
VC++中连接Oracle数据库的几种方法:
http://wenku.baidu.com/link?url=28YGj8UHqEmnhOa9BaRCSOI6w_f-QUomD0tjb3rFdEzxZ_8G0LkoCULOnYS0icX6u1KrUIhXPynyDIJPnVQDzlJn_-tlpIdJ1qA1m2IqtsW
OCI接口简介及其在VC++中的应用:
http://blog.csdn.net/cherishlei/article/details/4398867
C++使用OCI连接Oracle :
http://blog.chinaunix.net/uid-21592001-id-3271863.html
Pro*C OCI OCCI 及OCI介绍:
http://blog.sina.com.cn/s/blog_4b3c1f950100pvzx.html
OCI编程历程
http://www.cnblogs.com/ychellboy/archive/2010/04/16/1713884.html
使用点:
1、下载instantclient和ocilib(太大,我没有上传,不过需要的东西(除了sqlplus)我都上传并放到测试程序的ocilib目录中和debug目录中了)
我的instantclient有instantclient-basic-nt-11.2.0.4.0、instantclient-odbc-nt-11.2.0.4.0、instantclient-sdk-nt-11.2.0.4.0、instantclient-sqlplus-nt-11.2.0.4.0
我的ocilib是ocilib-4.1.0-windows(这里面有demo示例)
2、解压下载的压缩包(合并那几个instantclient为instantclient_11_2,程序运行需要知道这个目录)
3、ping服务器地址,telnet查看服务器端口能否访问
本地cmd访问服务器oracle
cmd定位到sqlplus.exe所在的目录中(比如,instantclient-sqlplus-nt-11.2.0.4.0目录中就会含有sqlplus.exe)
> sqlplus /nolog
> conn 用户名/密码@服务器地址:端口/数据库SID
eg:conn test/qiantangjiang@192.168.2.201:1521/ORCL
4、运行ocilib-4.1.0-windows的示例(在ocilib-4.1.0-windows\ocilib\proj\test中)可以测试是否能连上服务器的数据库
运行ocilib的demo时需要把lib32下的dll和lib放到debug中
二、测试程序说明
我的系统是32位,用的Unicode编码
这些文件在下载客户端驱动之后都有(我已经放到我的ocilib目录中和debug目录中了)
访问Oracle数据库需要3个dll文件:oci.dll、ociliba.dll、oraociei11.dll放到和运行程序同一个目录下(比如Debug下)
还要添加环境变量:NLS_LANG 值为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK(不然的话向数据库插入中文会是乱码)
我建了ocilib目录
ocilib目录中有两个子目录,分别是include和lib32
include中有ocilib.h ocilib.hpp ocilib_core.hpp ocilib_impl.hpp
lib32中有libocilib.a、libocilibw.a、ociliba.dll、ociliba.lib、ocilibw.dll、
VS2013属性配置:
字符集:Unicode字符集
(工程|属性|调试)环境:path=..\ocilib\lib32
(工程|属性|C/C++|常规)附加包含目录:..\ocilib\include
(工程|属性|连接器)附加库目录:..\ocilib\lib32
程序中还有
#pragma comment(lib, "..\\ocilib\\lib32\\ociliba.lib")
包含头文件
#include "ocilib.hpp"
初始化操作
Environment::Initialize(Environment::Default,"oci.dll和oraociei11.dll的目录");//第二个参数就是上述lib目录
三、程序展示
- #include <string>
- #include <iostream>
- #include <iomanip>
- #include "ocilib.hpp"
- #pragma comment(lib, "..\\ocilib\\lib32\\ociliba.lib")
- int main()
- {
- using namespace ocilib;
- using namespace std;
- //当前程序路径
- string szlibpath = "E:\\shuaizy\\Trunk\\oracletest\\Debug";
- try
- {
- Environment::Initialize(Environment::Default, szlibpath);
- Connection con("192.168.2.201/orcl", "test", "qiantangjiang");//实例、用户名、密码
- Statement st(con);
- st.Execute("select * from all_users order by user_id");
- Resultset rs = st.GetResultset();
- while (rs++)
- {
- std::cout << std::setw(30) << std::left << rs.Get<ostring>("username")
- << std::setw(10) << std::right << rs.Get<ostring>("user_id")
- << std::setw(20) << std::right << rs.Get<ostring>("created") << std::endl;
- }
- //std::cout << "=> Total fetched rows : " << rs.GetCount() << std::endl;
- cout << "执行语句:\r\nselect * from all_users order by user_id\r\n查询到 "
- << rs.GetCount() << " 条数据" << endl;
- }
- catch (std::exception &ex)
- {
- std::cout << ex.what() << std::endl;
- }
- Environment::Cleanup();
- return 0;
- }
C++使用ocilib访问oracle数据库的更多相关文章
- .net(C#)访问Oracle数据库的几种免安装组件的对比
Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...
- 基于OCILIB的oracle数据库操作总结及自动生成Model和Dao的工具
基于OCILIB的oracle数据库操作总结 1. 类图 2. 基类BaseOCIDao的设计与实现 BaseOCIDao.h头文件 #pragma once /* ----- ...
- 用JDBC访问ORACLE数据库 关于commit 增快效率 大数据 等的整理
1.问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考) 答: Oracle有自己的锁机制.就算你开100条 ...
- .net(C#)访问Oracle数据库的几种免安装组件的对比(转)
原文地址 [内容为转载,个人推荐还是用官方的组件,推荐使用 Oracle.DataAccess.dll ] .net(C#)编程过程中,使用到了以下三种免安装的Oracle访问组件,能够不安装Orac ...
- 运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题
运行平台: Windows 7 64位操作系统 运行环境: IIS 7 编程语言:C# 数据库: 32位的Oracle 10g 运行原因:64位操作系统C#客户端程序通过WCF访问ORACLE数据库 ...
- ODP.NET 之访问 Oracle 数据库
ODP.NET 之访问 Oracle 数据库 要相使用 Oracle Data Provider For .NET(ODP.NET), 必须先安装 ODP.NET 或者是 ODAC(Oracle Da ...
- 【方法】如何限定IP访问Oracle数据库
[方法]如何限定IP访问Oracle数据库 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...
- c#访问oracle数据库
想在c#中访问oracle数据库,毕竟是开发,想要轻量级访问oracle,客户机上无需安装oracle环境就能正常运行程序. 在网上找了相关资料,只需要引用一个dll即可实现. 访问代码(需引用dll ...
- WebService访问oracle数据库本地调试
WebService访问oracle数据库本地调试-一步一个坑 上篇文章提到我们额数据库挂了,重装了数据库,然后呢我需要在本地调试WebService,看看那些数据结构缺失,迁移到新数据库中去.踩坑之 ...
随机推荐
- asp.net MVC在IIS7或7.5上的发布问题
按照网上的做法,开启了ISAPI和CGI限制C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 应用程序池也设置好了,可是就是 ...
- C语言printf
1.调用格式为 printf("<格式化字符串>", <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部 ...
- SET GLOBAL FOREIGN_KEY_CHECKS取消外键约束
今天在工作中遇到的问题,在删除一个表时报错,发现有外键约束,所以不能删除,查了下发现需要取消外键约束. SET GLOBAL FOREIGN_KEY_CHECKS=0;全局取消外键约束 SET SES ...
- xml 及其语法
先说一些关于框架,开发中的框架,主要是用反射技术来封装数据. 先指定规范写出xml,然后通过读写流技术封装好一些API用来映射xml文件,方便取得xml中的配置信息.取得xml内容就可以通过取得的内容 ...
- scala中:: , +:, :+, :::, +++的区别
4种操作符的区别和联系 一. :: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表. 用法为 x::list,其中x为加入到 头部的元素,无论x是列表与否,它都只将成为新生成列 ...
- TaskController
package main.java.com.zte.controller.system; import java.io.PrintWriter; import java.util.ArrayList; ...
- document.body、document.documentElement和window获取视窗大小的差别
来源:http://www.ido321.com/906.html 在w3school关于window对象的介绍中,介绍了获取浏览器窗体大小的三种方法(浏览器的视口,不包含工具栏和滚动栏). 对于In ...
- JavaScript的技巧和最佳实践
JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发 (Node.js和Wakanda)等等.JavaScript还 ...
- window.postMessage实现网页间通信
window.postMessage() 方法可以安全地实现跨域通信.通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以 ...
- Warning: RPMDB altered outside of yum.的解决办法
错误提示: Warning: RPMDB altered outside of yum 解决办法: 删除yum的历史记录rm -rf /var/lib/yum/history/*.sqlite 上面的 ...