各位大神好,小弟遇見問題了,求教各位幫幫忙
就是我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,用這種方法查詢就會出現上面的錯,另外我能保證資料庫的這個欄位不為空,至少一行資料,結果就是一運行就出現上面的錯誤。
求各位朋友幫幫忙,先在此謝過!
uj5u.com熱心網友回復:
這個是C++的問題。你查看是是否是堆疊的問題。這里有個類似的帖子,已經解決了,你參考下:
http://bbs.csdn.net/topics/392068284
uj5u.com熱心網友回復:
我不知道是不是堆疊的問題,我用的是occi本身的函式,而且我沒有進行申請記憶體或者釋放記憶體的操作,所以很是困惑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/81532.html
標籤:開發
