各位大神好,小弟遇见问题了,求教各位帮帮忙
就是我oracle数据库查询的时候老是崩溃,具体错误如下:
0x772937B7 (ntdll.dll) (OracleLinkTest.exe 中)处有未经处理的异常: 0xC0000374: 堆已损坏。 (参数: 0x772ACDD8)。
网上也找了几个方法,但是没能解决问题我的代码如下:
插入代码:
void Employees::InsertData(string& strID, string& strTaskID, string& strResult, string& strTestTime, string& strAutoTestID)
{
//获得系统时间
char buf[50] = {0};
time_t timep;
time(&timep);
struct tm tmp;
localtime_s(&tmp,&timep); char bufTime[100] = {0};
sprintf_s(bufTime,"%d-%d-%d %d:%d:%d",1900+tmp.tm_year,1+tmp.tm_mon,tmp.tm_mday,tmp.tm_hour,tmp.tm_min,tmp.tm_sec);
string strtime(bufTime); //插入数据库
//string strSql = "insert into ASTS_TEST_LOG(ID,TASK_ID,RESULT,TEST_TIME,AUTOTEST_ID) values (:1,:2,:3,to_date(:4,'yyyy-mm-dd hh24:mi:ss'),:5)";
string strSql = "insert into ASTS_TEST_LOG(ID,TASK_ID,RESULT,TEST_TIME,AUTOTEST_ID) values (sys_guid(),:1,:2,to_date(:3,'yyyy-mm-dd hh24:mi:ss'),:4)";
pStmt->setSQL(strSql);
//pStmt->setString(1,stringID);//用Oracle数据库产生的ID填充,此处不再用随机数ID,故注释掉
pStmt->setString(1,"22");
pStmt->setString(2,strResult);
pStmt->setString(3,strtime);
pStmt->setString(4,strAutoTestID);
pStmt->executeUpdate();
}
查询代码如下:
void Employees::SelectData()
{
ResultSet* rs = pStmt->executeQuery("select* from ASTS_TEST_LOG");
while(rs->next())
{
string quantity =rs->getString(1);// get the first column as string取出第一列的值(对应为string型)

std::cout<<"string:"<<quantity<<std::endl;
} //关闭结果集
pStmt->closeResultSet(rs);
}
字段的名称是ID,数据类型是VARCHAR2(50)
具体情况如下:如果我自己插入ID,用这种方法查询没问题,但是如果我用sys_guid()产生ID,用这种方法查询就会出现上面的错,另外我能保证数据库的这个字段不为空,至少一行数据,结果就是一运行就出现上面的错误。求各位朋友帮帮忙,先在此谢过!