最后一步了,和远程数据库交互编程。哈哈,说是交互编程,只负责登陆成功而已。
第三步,程序中登陆远程数据库。
1、验证unix有无配置远程数据库的信息(unix本地服务名设置)
unix cd到oracle的目录去,找/opt/app/ora10g/product/10.2.0/network/admin/tnsnames.ora文件。嗯是的,就是这个文件,tns名称服务文件,这个文件里指明了远程服务器的ip等信息。无论装的是oracle服务端还是客户端还是instant client都必须找到这个文件,哪怕自己建(instant client可能要自己建)。vi tnsnames.ora 看是否有如下信息段:
DBDEMO =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.6.15)(PORT = 1521))
(LOAD_BALANCE = no)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testDB)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
这个信息段可以自定义多种信息,可以搜索看看,但核心是指明DBDEMO是unix端起得服务名,可以任意起名但cpp文件里要用到的,而HOST = 10.6.6.15是远程数据库所在地址。SERVICE_NAME = testDB看是远程数据库的名(全局数据库名,顺便提一下远程数据库要设置监听程序,你懂的,我有篇文章介绍了客户端和服务端的链接原理),这个名字必须要正确。保证这几个要点可以看2.
2、cpp文件的编写。
先看代码吧
#include <iostream> #include <occi.h> using namespace std; using namespace oracle::occi; main() { Environment *env=Environment::createEnvironment();//create succ string name = "name"; string pwd = "pwd"; string dbname = "DBDEMO"; try { Connection *conn=env->createConnection(name,pwd,dbname);// cout<<"conn succ!"<<endl; env->terminateConnection(conn);// } catch(SQLException e) { cout<<e.what()<<endl;// } Environment::terminateEnvironment(env);// cout<<"end!"<<endl; }
语句都能理解吧,就是建立链接,值得注意的是用户名和密码,以及DBDEMO名字,是unix配置的服务名,而不是远程oracle服务器的全局数据库名。本cpp是通过nuix的network文件夹连接远程数据库服务器的。修改数据库内容就自己去学吧。还很多路要走。
ok,make、./helloworld 看看结果吧。
至此全部完成了,每一个细节点都要仔细推敲,这样就不会乱了。有问题留言。