程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-求救!C++的OTL庫otl_stream不能正常結束的問題

c++-求救!C++的OTL庫otl_stream不能正常結束的問題

編輯:編程綜合問答
求救!C++的OTL庫otl_stream不能正常結束的問題

根據說明文檔otl_stream類構造函數的第一個參數是緩存區中能存放查詢結果的行數,按正常理解,如果表中有100條記錄,我將該參數設置成50條(代碼如下)應該是可以的,但實際上不行,在讀第50條的f2的時候就報錯,所以我將該參數設置到200,但是一樣讀到第100行的f2的時候報錯,錯誤與設置50是一樣的,不同只是一個在讀第50行最後一列的值時報錯,一個在讀第100行最後一列的值時報錯,且otl_exception中所有屬性成員都為空字符串!我將otl源碼中的拋出異常的那一句去掉(這是下策,可能造成嚴重的潛在問題,但是我想看一下結果,而且只是去掉一個throw語句),我想總該沒有錯誤了吧?合理的話,到第100行之後,i.eof()語句應該為false,但是實際卻仍是true,所以程序繼續執行循環然後報錯,看來簡單修改一下otl源碼也不行,這如何解決呢?很急,望有高手能救一把!

void select() {
otl_stream i(50, "select f1,f2 from test_tab", db);
float f1, f2;
while (!i.eof()){ //不知為何i.eof()總是為true?
//i.set_flush(true); //此句加與不加是一樣的
i>>f1>>f2;
cout<<"f1="<<f1<<", f2="<<f2<<endl;
} }

我用的是SqlServer2005,otl版本4.0.334

最佳回答:


改好了,暫時未查明原因,估計是某個參數變量(如db是局部變量),與select不在同一函數作用域,然後程序正常運行,又不知道什麼時候程序才發現這個變量無效了,就將某個狀態變量設置為無效,但是直到運行到超出緩存才去檢查這個狀態,結果就運行不下去了,初步理解是這樣!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved