最近做了一个项目,通过VC odbc访问oracle数据库,在我电脑上可以正常运行,在其他电脑上运行不了,原因是没有oracle odbc驱动,无法配置oracle数据源。网上的博文大都是安装oracle客户端来解决的。我想就是一个小程序,没必要安装客户端吧,参照网上博文并访问了oracle网址,于是有了这篇文章。
1、下载odbc驱动
需要下载两个东西
instantclient-basiclite-nt-12.1.0.1.0.zip
instantclient-odbc-nt-12.1.0.1.0.zip
网址:http://www.oracle.com/technetwork/cn/topics/winsoft-095945-zhs.html
由于时间推移,版本号会更新,网址也会变化。所以大家可以百度 oracle instantclient basiclite 关键词,然后再搜索结果中找见oracle官方网站,进行下载。下载时需要同意协议并是oracle注册用户,用户注册是免费的。
2、解压缩这两个文件到同一个文件夹
a、分别解压缩这两个文件
b、解压缩后两个文件夹里面都有instantclient_12_1目录,将odbc的instantclient_12_1目录下的内容拷贝到basicclient下的instantclient_12_1里面
c、为了使目录整齐简介,将basicclient下的instantclient_12_1目录拷贝到D:\Program Files\instantclient_12_1
3、将oracle数据库所在电脑上的NETWORK目录拷贝到instantclient_12_1目录下,我oracle服务器所在电脑的network在D:\oraclexe\app\oracle\product\11.2.0\server这个位置。
本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/
4、修改NETWORK\ADMIN\tnsnames.ora文件,将主机名换成IP地址。下面例子当中10.17.176.138以前是oracle数据库所在电脑上的主机名。主机名可能无法正确连接,所以换成IP地址。
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.17.176.138)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
5、添加环境变量TNS_ADMIN,变量值指向ADMIN目录,我的配置是D:\Program Files\instantclient_12_1\NETWORK\ADMIN
6、双击instantclient_12_1目录下的odbc_install.exe完成安装。注:安装时出现DOC框,并一闪而过,你可能无法判断是不是正确安装。其实你可以cmd进入instantclient_12_1目录,并.\odbc_install.exe手动安装。
8、配置数据源并测试
为了不影响测试,首先将oracle数据库所在电脑的防火墙关闭,或允许例外TCP 1521端口。配置客户端电脑,控制面板->数据源->用户DSN->添加中选择Oracle in instantclient_12_1,TNS Service Name中选择数据库名,我的名字是XE,点Test Connection,如果提示成功就OK了。
9、防止乱码
在安装数据库的电脑上(我的oracle是安装在window上的),查看HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_XXX下的NLS_LANG值,其中XXX是。。。,我也说不清楚,应该是数据库名吧。
在客户端电脑上增加环境变量NLS_LANG,其值是在上面得到的NLS_LANG值。我服务器的NLS_LANG是SIMPLIFIED CHINESE_CHINA.ZHS16GBK