C 使用occi連線oracle資料庫

2021-10-06 01:41:14 字數 3403 閱讀 6663

遇到的問題

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...