64,651
社区成员
发帖
与我相关
我的任务
分享
iRecordDownLoadFileNew ("07017ps10211456", 56239, "2008-10-15 10:30:27"); //这样没问题,存储过程可以正确执行
string acDevSer = "";
int iFileId = 0;
string acTime = "";
FindDevCrcSucInfo (pcValue, acDevSer, iFileId, acTime); //获得p1, iFildId, p2 值,这里没问题
char *p1 = strdup (acDevSer.c_str());
char *p2 = strdup (acTime.c_str());
iRecordDownLoadFileNew (p1, iFileId, p2); //!!!!!!!!这样调用时就报错。调试时 p1, iFildId, p2 均为以上值
iRecordDownLoadFileNew 函数:
int Cdataaccess::iRecordDownLoadFileNew (char *pDeviceJid, int iFileId, char *pDownTime)
{
_DBCONN *dbconn;
char acTmp[MAX_BUFFER_LEN];
SQLHSTMT hstmt;
SQLRETURN rc;
int i = 0;
dbconn = pclsGetIdleConn (&m_stDbconnpool);
if (!dbconn)
{
vdWrite (TEST_FILE, "can not find dbconn !");
return -2;
}
hstmt = hGetStateHandle (dbconn);
if (SQL_NULL_HSTMT == hstmt)
{
vdWrite (TEST_FILE, "can not find hstmt !");
iAddConn (&m_stDbconnpool, dbconn);
return -1;
}
memset (acTmp, 0, sizeof (acTmp));
sprintf (acTmp, "{call proc_tb_Dev_FileDownLoaded_Record_New (?,?,?)}");
rc = SQLPrepare (hstmt, (SQLCHAR *)acTmp, SQL_NTS);
if((rc!=SQL_SUCCESS) && (rc!=SQL_SUCCESS_WITH_INFO))
{
vdWrite (TEST_FILE, "iRecordDownLoadFile 1!");
iAddConn (&m_stDbconnpool, dbconn);
return -1;
}
SQLBindParameter (hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_WVARCHAR, SQL_DESC_LENGTH, 0, pDeviceJid, 0, NULL);
SQLBindParameter (hstmt, 2, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0, &iFileId, 0, NULL);
SQLBindParameter (hstmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_WVARCHAR, SQL_DESC_LENGTH, 0, pDownTime, 0, NULL);
rc = SQLExecute (hstmt);
if((rc!=SQL_SUCCESS) && (rc!=SQL_SUCCESS_WITH_INFO))
{
vdWrite (TEST_FILE, "iRecordDownLoadFile 2!"); //报错时就进入这里。
iAddConn (&m_stDbconnpool, dbconn);
return -1;
}
iAddConn (&m_stDbconnpool, dbconn);
return 0;
}
cout << p1 << endl;
cout << p2 << endl;
确定可以正确输出吗
rc = SQLExecute (hstmt); //rc 这里为-1;
if((rc!=SQL_SUCCESS) && (rc!=SQL_SUCCESS_WITH_INFO))
{
vdWrite (TEST_FILE, "iRecordDownLoadFile 2!");
iAddConn (&m_stDbconnpool, dbconn);
return -1;
}