1. 程式人生 > >C++通過OCILIB連線Oracle

C++通過OCILIB連線Oracle

先附上參考 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服務和監聽已經開啟了)

(汗,折騰了大半天居然這麼容易就連上了)