sSql.Format(_T("exec TrendsSP '%s', '%s', '%s', '%s'"),mobilenum,msgcontent,spname,Reserved);
printf("%s\n",sSql);
_RecordsetPtr m_pDbrecordset=NULL;
_bstr_t sCommand( (LPCTSTR)sSql );
_variant_t var;
try{
EnterCriticalSection( &(g_csDbConn) );
g_pDbConn->BeginTrans();
m_pDbrecordset = g_pDbConn->Execute( sCommand, &var, adCmdText );
g_pDbConn->CommitTrans();
LeaveCriticalSection( &(g_csDbConn) );
}
catch( _com_error& err )
{
LeaveCriticalSection( &(g_csDbConn) );
g_pDbConn->RollbackTrans();
// g_pDbConn->CommitTrans();
OutputMessage( (LPCTSTR)(err.Description()));

}
执行这条语句就抛出异常了
[Microsoft][ODBC SQL Server Driver][SQL Server]将数据类型 varchar 转换为 int 时出错。
而我把printf出来的sql语句放到SQL 查询分析器里运行却可以成功,没用过ado,不知道哪里出错了。
非常急啊,这是修改别人代码的

解决方案 »

  1.   

    m_pDbrecordset = g_pDbConn->Execute( sCommand, &var, adCmdText );
    adCmdText 参数不对吧存储过程也不是这么走的,很久以前用过一次,你找找资料
      

  2.   

    m_pDbrecordset = g_pDbConn->Execute( sCommand, &var, adCmdText );
    改为m_pDbrecordset = g_pDbConn->Execute( sCommand, &var, adCmdStoredProc);试试
      

  3.   

    用了那个adCmdStoredProc,返回错误:[Microsoft][ODBC SQL Server Driver]语法错误或违反访问规则
      

  4.   

    你取的数据是字符类型的,而你存的表可能是int的所以不行