- 论坛徽章:
- 0
|
请教一个pro*c问题,怎样在一个线程中连接两个数据库
参考下面:
注意 sql_context 用法
- int TDb_Connect_Ora::DbConnect(char * dbname,char * username,char * password)
- {
- EXEC SQL BEGIN DECLARE SECTION;
- char * pusername=username;
- char * ppassword=password;
- sql_context dbarea;
- struct sqlca sqlca;
- char connect_str[200];
- EXEC SQL END DECLARE SECTION;
- printf("dbconnect %s %s\n",dbname,username);
- sqlca.sqlcode=0;
- EXEC SQL ENABLE THREADS;
- EXEC SQL CONTEXT ALLOCATE :dbarea;
- if(sqlca.sqlcode!=0)
- {
- printf("dbconnect %s %s fail\n",dbname,username);
- printf("connect to database error : sqlcode is %d u: %s p: %s\n",sqlca.sqlcode,pusername,ppassword);
- return 0;
- };
- EXEC SQL CONTEXT USE :dbarea;
- if(sqlca.sqlcode!=0)
- {
- printf("dbconnect %s %s fail\n",dbname,username);
- printf("connect to database error : sqlcode is %d u: %s p: %s\n",sqlca.sqlcode,pusername,ppassword);
- return 0;
- };
- strcpy(mUserName,username);
- strcpy(mPassWord,password);
- strcpy(mDbName,dbname);
- if(password[0]!=0)
- sprintf(connect_str,"%s/%s",pusername,ppassword);
- else
- sprintf(connect_str,"%s",pusername);
- EXEC SQL CONNECT :connect_str;
- //EXEC SQL CONNECT :pusername IDENTIFIED BY :ppassword;
- if(sqlca.sqlcode!=0)
- {
- printf("dbconnect %s %s fail\n",dbname,username);
- printf("connect to database error : sqlcode is %d u: %s p: %s\n",sqlca.sqlcode,pusername,ppassword);
- return 0;
- };
- mDbAreaList=dbarea;
- printf("dbconnect %s %s ok\n",dbname,username);
- return 1;
- }
- void TDb_Connect_Ora::DbDisconnect()
- {
- EXEC SQL BEGIN DECLARE SECTION;
- sql_context dbarea=mDbAreaList;
- struct sqlca sqlca;
- EXEC SQL END DECLARE SECTION;
- EXEC SQL CONTEXT USE :dbarea;
- DbExecuteSql(NULL,"commit");
- EXEC SQL COMMIT WORK RELEASE;
- EXEC SQL CONTEXT FREE :dbarea;
- }
复制代码 |
|