遇到的問題
occi就是oracle c++ call inte***ce。
然後網頁往下拉,這個對應的sdk包就有相關標頭檔案和使用例子等。
我把對應標頭檔案和lib庫放到了我的計算機的這裡:
(1) 然後用使用的專案(vs2019下)屬性配置相關的標頭檔案引用和lib庫引用,d:\usinglibs我配了環境變數libs_root:
(2)靜態庫
debug版本的庫一般是名字後面有乙個d的。 oraocci19d.lib.
(1)databasemanager.h標頭檔案
#pragma once
#include
#include
#include
#include
using
namespace utils;
using
namespace oracle::occi;
namespace datacenter;~
databasemanager()
; "(description=(address=(protocol=tcp)(host=192.168.0.97)(port=1521))(connect_data = (server = dedicated)(service_name = mydb)))"
intconnect
(const std::string& user,
const std::string& passwd,
const std::string& connstr)
;void
getsecutitycodesfromdb
(map<
int, map
>
& codetonamemap,
const string& sql,
int date)
;private
://boost::shared_ptrm_envptr;
//boost::shared_ptrm_connptr;
environment* m_envptr;
connection* m_connptr;};
}
(2)對應的cpp檔案,databasemanager.cpp
#include
using
namespace datacenter;
databasemanager::
~databasemanager()
if(nullptr
!= m_envptr)
}int databasemanager::
connect
(const std::string& user,
const std::string& passwd,
const std::string& connstr)
catch
(sqlexception& e)
return0;
}void databasemanager::
getsecutitycodesfromdb
(map<
int, map
>
& codetonamemap,
const string& sql,
int date)
lloginfo
("secutity codes,date:"
<< date <<
",nums:"
<< codetonamemap[date]
.size()
);stmt-
>
closeresultset
(rs)
; m_connptr-
>
terminatestatement
(stmt);}
catch
(sqlexception& e)
}
(3)某個使用的cpp中
void dbdata::
initcodetonamemap
(int startdate,
int enddate)
m_codetonamemap.
clear()
; stringstream ss;
int nowdate = startdate;
lloginfo
("get data from date:"
<< startdate <<
" to date:"
<< enddate)
; vector stypevec = cfg.
readvector
("oracle"
,"stype"
,",");
vector exchangevec = cfg.
readvector
("oracle"
,"exchange"
,",");
stringstream sstype;
stringstream ***change;
addsinglequotes
(sstype, stypevec)
;addsinglequotes
(***change, exchangevec)
;while
(nowdate < enddate)
}
注意:本人的**因為是實際使用的,如日誌庫和配置檔案讀取等上面的**用並沒有。想要編譯通過,需要注釋掉。
(1)對應的動態庫放到執行目錄下,不單單是oraocci19d.dll這個庫,還需要如下兩個,否則執行資料庫連線的時候,會丟擲異常,連線不成功。
oraociei19.dll
oraons.dll
(2)sql語句後面不需要分號;,注意看我的**,否則也會出錯拋異常。
完畢。
使用OCCI連線Linux下Oracle資料庫
occi oracle c call inte ce c 程式與oracle 資料庫實現互動的應用程式介面,它以動態連線庫的形式提供給使用者。occi 對oci 實行了物件級的封裝,其底層仍是 oci occi連線 linux 下的oracle 資料庫 1 安裝 linux 下的oracle 客戶端...
使用Occi連線Oracle資料庫
1 首先應該建立環境變數 environment 類是occi 程式的基礎類,所有的 occi 物件的建立都是依計 environment 物件來建立的,所以 environment 物件的建立必須放在第一位,而且也必須是最後乙個被終止的。例如 首先建立乙個 environment 物件env 然後...
redhat5 下 occi連線oracle資料庫
instantclient basic linux 11.2.0.3.0.zip 包含動態鏈結庫等 instantclient sdk linux 11.2.0.3.0.zip 包含開發所需的標頭檔案等 2.通過winscp上傳至redhat5,例如使用者為fanbin,目錄為 home fanbi...