📄 ora_context.pc
字号:
#define SQLCA_STORAGE_CLASS extern
EXEC SQL INCLUDE ora_context.pch;
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include "GlobalVar.h"
#include "mutex.h"
ora_context::ora_context(char* classname,int threadid)
{
strcpy(m_context_name,classname);
m_threadid = threadid;
GetCurrentDirectory(256,m_CurrentDir);
convert_Connected_Database= DATABASE_STATUS_DISCONNECTED;
convert_display=1;
sprintf(convert_log_name,"VNConvert_ERR");
convert_error_flag=0;
//???????need to declare error handler?
EXEC SQL ENABLE THREADS ;
EXEC SQL WHENEVER SQLERROR DO on_error();
EXEC SQL CONTEXT ALLOCATE :m_context;
}
ora_context::~ora_context()
{
//???????need to declare error handler?
EXEC SQL WHENEVER SQLERROR DO on_error();
EXEC SQL CONTEXT FREE :m_context;
}
int ora_context::DisplayConvertInGUI(char *info)
{
if((convert_display==1)&&(info))//&&(g_SGIP_HWND)
{
// CString *msg = new CString(info);
// ::PostMessage(g_SGIP_HWND,WM_LOGMSG,(WPARAM)msg,0);
printf("%s\n",info);
}
return 0;
}
int ora_context::errorlogwrite (char *log_name,const char *data)
{
FILE* fp;
time_t timer;
struct tm *tblock;
char mytime[20];
char filename[256];
sprintf(filename,"%s\\%s%d.log",m_CurrentDir,log_name,m_threadid);
if((fp = fopen(filename,"a")) == NULL)
{
return 0;
}
timer = time(NULL);
tblock = localtime(&timer);
strftime(mytime, 20, "%Y:%m:%d %H:%M:%S", tblock);
fprintf(fp,"%s,线程%s --- %s\n",mytime,m_context_name,data);
fflush(fp);
fclose(fp);
return 1;
}
void ora_context::on_error(void)
{//when dealing error need not use context, see examples of oracle
char db_error[200];
memset(db_error,0,sizeof(db_error));
convert_error_flag = -1;
EXEC SQL CONTEXT USE :m_context;
EXEC SQL WHENEVER SQLERROR CONTINUE;
sprintf(db_error,"线程%s,Convert Oracle error detected : % .70s\n", m_context_name,sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK WORK RELEASE;
convert_Connected_Database = DATABASE_STATUS_DISCONNECTED;
DisplayConvertInGUI(db_error);
errorlogwrite(convert_log_name,db_error);
}
int ora_context::conn_db(char* user,char* pwd,char* conn)
{
EXEC SQL BEGIN DECLARE SECTION;
char db_username[40];
char db_password[80];
char db_conn[80];
EXEC SQL END DECLARE SECTION;
static mutex excluder;
//need not memset these variable?
strncpy(db_username,user,18);
strncpy(db_password,pwd,38);
strncpy(db_conn,conn,38);
EXEC SQL CONTEXT USE :m_context;
convert_error_flag=0;
if(excluder.get_in()==SUCCESS)
{
EXEC SQL WHENEVER SQLERROR DO on_error();
EXEC SQL CONNECT :db_username IDENTIFIED BY :db_password USING :db_conn;
excluder.get_out();
}
else
{
convert_error_flag=-1;
return -1;
}
if(convert_error_flag==-1) return -1;
else return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -