- 论坛徽章:
- 0
|
给你看看我写的
/*连接数据库*/
int db_connec(PUB_CFG *db_conn)
{
EXEC SQL BEGIN DECLARE SECTION;
char db_pwd[MAX_L];
char user_sid[MAX_L];
char db_sid[MAX_L];
char db_user[MAX_L];
EXEC SQL END DECLARE SECTION;
memset(db_sid,0x00,sizeof db_sid);
memset(db_user,0x00,sizeof db_user);
memset(db_pwd,0x00,sizeof db_pwd);
memset(user_sid,0x00,sizeof(user_sid));
strcpy(db_sid,db_conn->db_sid);
strcpy(db_user,db_conn->db_user);
strcpy(db_pwd,db_conn->db_u_pwd);
if (strlen(db_sid) && strlen(db_user) && strlen(db_pwd))
{
sprintf(user_sid,"%s@%s",db_user,db_sid);
}
else
{
LOG(ERR_FATAL,__FILE__,__LINE__,"数据库连接参数不足! SYS_ERR_CODE=[%d]",DB_VAR_ERR);
return DB_VAR_ERR;
}
EXEC SQL CONNECT :user_sid IDENTIFIED BY :db_pwd;
if (SQLCODE)
{
if (connect_count < CONNECT_COUNT)
{
LOG(ERR_FATAL,__FILE__,__LINE__,"连接数据库失败! 连接次数 [%d] DB_ERR_CODE=[%d] DB_ERR_MSG=[%s]",
connect_count+1,SQLCODE,SQLERRMSG);
sleep(DB_CONNECT_TIME);
connect_count++;
db_connec(db_conn);
}
else
{
LOG(ERR_FATAL,__FILE__,__LINE__,"连接数据库已超过规定[%d]次!本次调用失败!",connect_count);
return SYS_DB_CONNECT_ERR;
}
}
return SQLCODE;
} |
|