关于ORACLE链接问题

erldy 2006-02-23 09:33:07
请问各位前辈高手,我要在while的循环中同时操作两台ORACLE数据库进行数据交换,现在想问能同时只一次打开两台数据库的链接就可以进行相关的操作吗?还是先打开一台,进行相关操作取得数据后关闭再打开另外一台进行数据交换?这样的话就要不断的打开链接、关闭链接……
下面是我使用的链接函数:
int
LDbConnect(const char * user, const char * pass, const char * dbname) {
EXEC SQL BEGIN DECLARE SECTION;
char username[20];
char password[20];
char db_name[20];
EXEC SQL END DECLARE SECTION;
/*Connect to database*/
strcpy(username, user);
strcpy(password, pass);
if(dbname) {
strcpy(db_name, dbname);
EXEC SQL CONNECT:username IDENTIFIED BY:password using :db_name;
}
else EXEC SQL CONNECT:username IDENTIFIED BY:password;
if(sqlca.sqlcode<0) {
sprintf(errorMessage, "error: %d %s", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);
return -1;
}
else {
sprintf(errorMessage, "connected to local database %s as %s ok", dbname, user);
return 0;
}
}

不知道我说的清楚不?请指教,谢谢!!
...全文
99 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wffffc 2006-02-24
  • 打赏
  • 举报
回复

比如你有两个数据库test1和test2那么你可以这样连接:
char username[10] = "scott";
char password[10] = "tiger";
char db_string1[20] = "NYNON1";
char db_string2[20] = "CHINON";
EXEC SQL DECLARE test1 DATABASE;
EXEC SQL DECLARE test2 DATABASE;
EXEC SQL CONNECT :username IDENTIFIED BY :password
AT test1 USING :db_string1;
EXEC SQL CONNECT :username IDENTIFIED BY :password
AT test2 USING :db_string2;

对他们操作的时候这样:
操作
EXEC SQL AT test1 select * from emp;
EXEC SQL AT test2 select * from emp;
快一年没用了不知道对不对,你自己试试看吧,不懂的地方可以看看oracle9的文档:
document for oracle9i\appdev.920\a97269.pdf
里面讲的比较详细,当初在unix下面用c编数据库的程序就是看的这里
erldy 2006-02-24
  • 打赏
  • 举报
回复
我的两台ORACLE数据库是两个独立的服务器,按照上面的思路,我应该怎样链接啊?然后怎样进行相关的SELECT INSERT操作啊?对PROC还不是很熟悉,请指点啊!!谢谢了
erldy 2006-02-23
  • 打赏
  • 举报
回复
上面的朋友有QQ吗?我想在线请教一下,谢谢了!我的是QQ是103808353
wffffc 2006-02-23
  • 打赏
  • 举报
回复
char username[10] = "scott";
char password[10] = "tiger";
char db_string1[20] = "NYNON1";
char db_string2[20] = "CHINON";
...
/* give each database connection a unique name */
EXEC SQL DECLARE DB_NAME1 DATABASE;
EXEC SQL DECLARE DB_NAME2 DATABASE;
/* connect to the two nondefault databases */
EXEC SQL CONNECT :username IDENTIFIED BY :password
AT DB_NAME1 USING :db_string1;
EXEC SQL CONNECT :username IDENTIFIED BY :password
AT DB_NAME2 USING :db_string2;

这样就可以同时操作两个数据库了

EXEC SQL CREATE DATABASE LINK db_link1
CONNECT TO username1 IDENTIFIED BY password1
USING ’NYNON’;
EXEC SQL CREATE DATABASE LINK db_link2
CONNECT TO username2 IDENTIFIED BY password2
USING ’CHINON’;
EXEC SQL CREATE SYNONYM emp FOR emp@db_link1;
EXEC SQL CREATE SYNONYM dept FOR dept@db_link2;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧