C++通過OCILIB連線Oracle
阿新 • • 發佈:2019-01-07
先附上參考 http://blog.csdn.net/rznice/article/details/74466123
準備:1.ocilib,直接百度然後有個GitHub的連結,我這邊下的是ocilib-4.4.0-windows.zip
2.VS2012/15/17均可
3.Oracle11g
一開始我是按照參考部落格裡面的方法完成的,不過後來經過小夥伴的驗證,完全不需要那麼麻煩的配置,這裡把改進後的步驟寫一下。
第一步:建立工程,因為我是64位資料庫,所以我
第二步:把剛才下載的ocilib解壓,把裡面include和lib64裡面的檔案複製到原始檔目錄下
第三步:引用標頭檔案進來,我用的hpp那個:
解決方案資源管理器視圖裡標頭檔案上右鍵→新增→現有項→選擇ocilib.hpp
第四步:主程式,把資料庫的資訊改成自己的就行了
#include <iostream> #include <string> #include "ocilib.hpp" #pragma comment(lib,"ociliba.lib") void err_handler(OCI_Error *err) { printf("%s\n", OCI_ErrorGetString(err)); } int main(void) { OCI_Connection *cn; if (!OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT)) { return EXIT_FAILURE; } cn = OCI_ConnectionCreate("study", "gongjianbo", "qq654344883", OCI_SESSION_DEFAULT); printf("Server major version : %i\n", OCI_GetServerMajorVersion(cn)); printf("Server minor version : %i\n", OCI_GetServerMinorVersion(cn)); printf("Server revision version : %i\n\n", OCI_GetServerRevisionVersion(cn)); printf("Connection version : %i\n\n", OCI_GetVersionConnection(cn)); OCI_Statement *st = OCI_StatementCreate(cn); //OCI_ExecuteStmt(st, "insert into test values(7,'oci','test')"); //OCI_ExecuteStmt(st, "commit"); OCI_ExecuteStmt(st, "select * from test"); OCI_Resultset *rs = OCI_GetResultset(st); while (OCI_FetchNext(rs)) printf("ID: %d, NAME: %s, MESSAGE: %s\n", OCI_GetInt(rs, 1), OCI_GetString(rs, 2), OCI_GetString(rs, 3)); printf("\n%d row(s) fetched\n", OCI_GetRowCount(rs)); OCI_StatementFree(st); OCI_ConnectionFree(cn); OCI_Cleanup(); system("PAUSE"); return EXIT_SUCCESS; }
最後就是運行了:
(先確定Oracle服務和監聽已經開啟了)
(汗,折騰了大半天居然這麼容易就連上了)