免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1720 | 回复: 1
打印 上一主题 下一主题

请教一个pro*c问题,怎样在一个线程中连接两个数据库 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2005-10-14 09:15 |显示全部楼层

请教一个pro*c问题,怎样在一个线程中连接两个数据库

参考下面:
  注意 sql_context  用法



  1. int TDb_Connect_Ora::DbConnect(char * dbname,char * username,char * password)
  2. {
  3. EXEC SQL BEGIN DECLARE SECTION;
  4.   char * pusername=username;
  5.   char * ppassword=password;
  6.   sql_context dbarea;
  7.   struct sqlca sqlca;
  8.   char   connect_str[200];
  9. EXEC SQL END DECLARE SECTION;

  10.   printf("dbconnect %s %s\n",dbname,username);
  11.   sqlca.sqlcode=0;
  12.   EXEC SQL ENABLE THREADS;
  13.   EXEC SQL CONTEXT ALLOCATE :dbarea;
  14.   if(sqlca.sqlcode!=0)
  15.   {
  16.     printf("dbconnect %s %s fail\n",dbname,username);
  17.     printf("connect to database error : sqlcode is %d u: %s p: %s\n",sqlca.sqlcode,pusername,ppassword);
  18.     return 0;
  19.   };

  20.   EXEC SQL CONTEXT USE :dbarea;
  21.   if(sqlca.sqlcode!=0)
  22.   {
  23.     printf("dbconnect %s %s fail\n",dbname,username);
  24.     printf("connect to database error : sqlcode is %d u: %s p: %s\n",sqlca.sqlcode,pusername,ppassword);
  25.     return 0;
  26.   };

  27.   strcpy(mUserName,username);
  28.   strcpy(mPassWord,password);
  29.   strcpy(mDbName,dbname);

  30.   if(password[0]!=0)
  31.     sprintf(connect_str,"%s/%s",pusername,ppassword);
  32.   else
  33.     sprintf(connect_str,"%s",pusername);

  34.   EXEC SQL CONNECT :connect_str;
  35.   //EXEC SQL CONNECT :pusername IDENTIFIED BY :ppassword;
  36.   if(sqlca.sqlcode!=0)
  37.   {
  38.     printf("dbconnect %s %s fail\n",dbname,username);
  39.     printf("connect to database error : sqlcode is %d u: %s p: %s\n",sqlca.sqlcode,pusername,ppassword);
  40.     return 0;
  41.   };
  42.   mDbAreaList=dbarea;      
  43.   printf("dbconnect %s %s ok\n",dbname,username);
  44.   return 1;
  45. }

  46. void TDb_Connect_Ora::DbDisconnect()
  47. {
  48. EXEC SQL BEGIN DECLARE SECTION;
  49.   sql_context dbarea=mDbAreaList;
  50.   struct sqlca sqlca;
  51. EXEC SQL END DECLARE SECTION;

  52. EXEC SQL CONTEXT USE :dbarea;
  53.   DbExecuteSql(NULL,"commit");
  54.   EXEC SQL COMMIT WORK RELEASE;
  55.   EXEC SQL CONTEXT FREE :dbarea;
  56. }

复制代码

论坛徽章:
0
2 [报告]
发表于 2005-10-14 10:26 |显示全部楼层

请教一个pro*c问题,怎样在一个线程中连接两个数据库

原帖由 "pinyin" 发表:
谢谢mengwg的热心帮助。
可能是我没说清楚,多线程多个连接我是没问题的。
我是想在一个线程里连两个不同的数据库,从数据库1中取出数据然后存入到数据库2中。


1\ 可以试试工作区切换.
2\ 做dblink最简单,用一个数据库操作.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP