ADO远程连接ORACLE数据库服务器的方法总结及遇到的问题

时间:2021-01-01 11:08:50

两台样机要与服务器连接,并且采集到的数据也要存入服务器的数据库,搭建过程如下:

一、数据库迁移:

  1. 首先使用exp导出口令将我做好的数据库导出成dmp文件:exp 用户名/密码@ORCL rows=y indexes=y compress=n buffer=65536 feedback=100000 OWNER=用户名 file=H:/xxx.dmp log=H:/xxx.log

  2. 再在服务器上新建用户并授予相应的权限,使用imp口令导入数据库文件:imp 用户名/密码 file=H:/xxx.dmp log=H:/xxx_log.log fromuser=用户名

二、走局域网内部的搭建方式:

  1. MFC程序采用了ADO接口与数据库连接,首先使用网线连接交换机,然后分配本地网络中的ip地址,使其与服务器处于同一个网段中;
  2. 样机本地使用oracle 11g客户端与服务器连接,下载安装32位的oracle客户端,安装完成后,配置添加网络服务名和监听,完成后使用ado连接助手测试是否可以连接成功,并获得连接字符串:Open(_bstr_t(_T("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=otdruser;Data Source=192.168.0.8:1521/ORCL")), _bstr_t(_T("用户名")), _bstr_t(_T("密码")), adOpenUnspecified);
  3. 在程序中修改连接字符串,并编译成功后运行查看效果。

三、走公网的搭建方式:

      与走内网的区别仅在于连接字符串不一样而已:

   Open(_bstr_t(_T("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=otdruser;Data Source=xxx.xxx.xxx.xxx:1521/ORCL")), _bstr_t(_T("用户名")), _bstr_t(_T("密码")), adOpenUnspecified)

      并且数据源的ip要写成服务器映射为公网之后的ip地址,否则无法连接。

遇到的问题

一开始部署的时候,因为oracle的驱动不了解,使用了微软的ole db provider for oracle 接口,导致程序一直无法连接数据库,实际上,oracle 11g的64位客户端存在问题,安装上64位的之后,添加数据源的列表中根本没有oracle provider for ole db ,不知为啥,打了补丁,使用ODAC仍然解决不了问题,最后无奈只好卸载了64位的重新装了32位的客户端和驱动,这才连接成功了。


PS:我有ado连接数据库的类库文件,可以直接加入项目中使

用,需要的可以给我留言(原创文章,转载请注明出处)。