十万火急,关于sql_server7.0的调用ODBC错误([ODBC SQL Server Driver]字符串数据,右截位)

hejingbin 2002-03-02 12:01:51
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;
}
...全文
214 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧