十万火急,关于sql_server7.0的调用ODBC错误([ODBC SQL Server Driver]字符串数据,右截位)
Type: ODBC调用错误
ErrorCode: 0
ErrorText: [Microsoft][ODBC SQL Server Driver]字符串数据,右截位
Time: 2002/03/02 10:13:03
//绑定输入参数
if (!BindInputPara(hstmt,NetCmdInfo[nCmdIndex].stQuery[i].szParamType,(char *)pParaData,nInpPos,nParaPos,pPara,cbInd))
{
nRet = 0;
break;
}
//保存输出参数或列在参数列表中的位置
nOutPos = nParaPos;
//绑定过程输出参数
if (bIsProc)
{
if (!BindOutputPara(hstmt,NetCmdInfo[nCmdIndex].stQuery[i].szColType,nParaPos,pPara,cbInd))
{
nRet = 0;
break;
}
}
//执行SQL
sqlret = SQLExecDirect(hstmt,(SQLTCHAR *)NetCmdInfo[nCmdIndex].stQuery[i].szSql,SQL_NTS);
if (sqlret != SQL_SUCCESS && sqlret != SQL_SUCCESS_WITH_INFO && sqlret != SQL_NO_DATA)
{
//记录ODBC错误
long nErrCode;
char szText[256+1];
GetErrorInfo(SQL_HANDLE_STMT,hstmt,&nErrCode,szText);
WriteTraceLog(TRACE_ODBCERR,nErrCode,szText);
//处理ORA错误
switch(nErrCode)
{
case 28: //ORA-00028 your session has been killed
case 3113: //ORA-03113 end-of-file on communication channel
case 12203: //设置数据库连接已断开状态
DisConnect();
break;
case 1041: //ORA-01041 internal error. hostdef extension doesn't exist
//重新连接
DisConnect();
FreeODBC();
if (!Connect(theApp.m_strDSN,theApp.m_strUserName,theApp.m_strPassword))
{
//记录ODBC错误
GetErrorInfo(SQL_HANDLE_DBC,m_hdbc,&nErrCode,szText);
WriteTraceLog(TRACE_ODBCERR,nErrCode,szText);
}
else
{
WriteTraceLog(TRACE_ODBCERR,0,"重新连接数据库成功!");
}
break;
}
nRet = 0;
break;
}