使用occi訪問oracle
Environment *env;
Connection *conn;
Statement *stmt;
ResultSet *rs;
string username = "system";//用戶名
string password = "st1234";//密碼
string connstring = "orcl";//資料庫連接字串
string sql,strname;
int isno;
env = Environment::createEnvironment();//創建環境變數 //第一處泄漏
conn = env->createConnection(username,password,connstring); //創建資料庫連接物件第二處泄漏
stmt = conn->createStatement();//創Statement物件第三處泄漏
sql = " SELECT u_id,u_name,to_char(u_date,'yyyy-mm-dd hh24:mi:ss') FROM student";
stmt->setSQL(sql);//準備SQL陳述句
try
{
rs = stmt->executeQuery();//執行SQL陳述句,回傳結果集
while (rs->next()) //取資料
{
isno = rs->getInt(1);
strname=rs->getString(2);
cout<< isno << " AND " << strname << endl;
cout<<rs->getString(3)<<endl;
}
cout <<"SELECT SUCCESS" << endl;
}
catch(SQLException ex) //例外處理
{
cout << " Error Number "<< ex.getErrorCode() << endl;
cout << ex.getMessage() << endl;
}
conn->terminateStatement(stmt);//終止Statement物件
env->terminateConnection(conn);//斷開資料庫連接
Environment::terminateEnvironment(env);// 終止環境變數
return 1;
uj5u.com熱心網友回復:
換個版本試試,這種底層的東西就算真掃出來有泄露你也不好處理的,最好和客戶溝通或者后期加點驗證補救一下uj5u.com熱心網友回復:
找ORACLE技術支持?或把問題發到ITPUB上看看
uj5u.com熱心網友回復:
不懂這個,不知道 是不是和 C# 這類高級語言一樣有 銷毀物件的語法;uj5u.com熱心網友回復:
高手啊,不過這個東西界定的標準不一樣,開個sr問問,誰知道oracle會給怎么樣的回復呢。值得學習,持續關注
uj5u.com熱心網友回復:
你確定是記憶體泄漏(記憶體呼叫100次長100倍、呼叫10000次長10000倍),而不是類似連接池這樣的buffer功能?轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/112082.html
標籤:高級技術
