一.版本问题
结合这篇博文自己重新做了个总结
visual studio 2017使用OCCI连接oracle数据库全过程解析
https://www.cnblogs.com/steval/articles/6831454.html
首先,连接oracle数据库有四种方法,OLD,ODBC,oracle developer tools for visual studio(ODT,这个是需要在oracle官网上下载相关的软件支持的),最后一种方法就是今天要演示的使用OCCI连接oracle数据库。前面的三种方法都是用.net框架去连接,最后一种使用的是C++的方式。
据某篇博客说,OCCI的连接方式是这几种连接方式中最好的一种
首先需要确定你是用的oracle的版本,因为这将决定你是用的VS版本和OCCI软件包版本。我在项目中使用的是oracle12C 12.1.0.2这个版本(注意64位和32位),这个版本中instant client是oracle数据库的客户端,用来连接使用的。OCCI软件包就在其中(这是后话了)。你确定要了oracle版本后,就确定好instant client的版本(注意64位和32位),你先下载下来,看下这个软件包中使用的是VC几的版本。这个VC版本将决定你是用的VS的版本。
VC8 -- VS2005
VC9 -- VS2008
VC10 -- VS2010
VC11 -- VS2012
VC12 -- VS2013
VC14 -- VS2015
Version 12.2.0.1.0 VC14
Version 12.1.0.2.0 VC10、11、12
Version 12.1.0.1.0 VC10、11
Version 11.2.0.4.0 VC8、9 (10)
Version 11.2.0.3.0 VC8、9 (10) 10需要再下载另外的OCCI
Version 11.2.0.2.0 VC8、9 (10)
Version 11.2.0.1 VC8、9
Version 11.1.0.7.0 VC71、8
Version 11.1.0.6.0 VC71、8
Version 10.2.0.4 VC7、71
也就是oracleVersion 12.1.0.2.0可以在VS2010,VS2012,VS2013下使用。在别的VS下就不能用了。在VS2013中配置occi 的附加包含文件和库目录时特别要注意选择的VC版本12。
下载和配置环境过程 可以参考上面的那个博文。
(1)还有一个X32 和X64的问题:如果我的Oracle Client是64位的,那么就需要64位的OCCI(下载64位的Oracle Client),并且,在VS中,程序也需要以64位的方式进行编译连接。(2)附加依赖项中输入的oraocci12d.lib和oraocci12.lib,一定要oraocci12d.lib在前面!!因为我用的是debug下面的,要不然在后面测试的时候就会出现这个问题
(3)因为有三个版本的VC,在设置PATH时