- 論壇徽章:
- 0
|
請(qǐng)教一個(gè)pro*c問(wèn)題,怎樣在一個(gè)線程中連接兩個(gè)數(shù)據(jù)庫(kù)
參考下面:
注意 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;
- }
復(fù)制代碼 |
|