日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC使用OCCI开发的简介

發(fā)布時(shí)間:2024/3/26 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC使用OCCI开发的简介 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

VC++環(huán)境設(shè)置

?

1加include files項(xiàng):%ORACLE_HOME%\oci\include??

?

? %ORACLE_HOME% = HKEY_LOCALMACHINE_SOFTWARE\SOFTWARE\ORACLE\KEY_OraDb10g_home 注冊(cè)表鍵

?

2、加library file

項(xiàng):%ORACLE_HOME%\oci\lib\msvc\vc6? %ORACLE_HOME%\oci\lib

3、加lib文件oraocci10.lib (VS10的鏈表-強(qiáng)制依賴項(xiàng))

4、在preprocessor definitions 下面去掉_DEBUG宏,加入WIN32COMMON _DLL

_MT? 3個(gè)宏;或在#include <occi.h>前面加以下代碼

?

#inndef WIN32COMMON

#define WIN32COMMON

#endif

#inndef _DLL

#define _DLL

#endif

#inndef _MT

#define _MT

#endif

?

5、在project options 里將MLd去掉d,去掉/GZ。

或者在build->set active configouration 打開set active project configouration對(duì)話

框,選擇win32 release。

?

使用方法:

#include <occi.h>

using namespace oracle::occi;

?

環(huán)境變量Environment

?

Environment *env;

Env=Environment::creatEnvironment(Enviroment::DEFAULT);

Environment::terminateEnvironment(env);

?

連接對(duì)象:Connection

Connection *conn;

Conn=env->createConnection(user,passwd,db);

Env->terminateConnection(conn);

?

普通連接池:

?

ConnectionPool *connPool;

connPool=env->creatConnectionPool(poolusername,poolpasswd,connectstring,minco

nn,maxconn,incrconn);

普通連接:

con=connPool->createConnection(username,password);

?

代理連接:

?

ConectionPool->createProxyConnection(

?Const string &username,

?Connetion::ProxyType proxtType=Connection::PROXY_DEFAULT);

?

或者

?

ConnectionPool->createProxyConnection(

?Const string &username,

?String roles[],

?Int numRoles,

?Connection::ProxyType proxyType=Connection::PROXY_DEFAULT);

?

無狀態(tài)連接池:(連接池用完后可自動(dòng)增加)

?

StatlessConnectionPool *spool=

?

?Enviroment::CreatStatlessConnectionPool(username,passwd,connectstring,maxco

?

nn,minconn,incrconn,HOMOGENOUS);

Connection *conn=spool->getConnection();//獲取連接對(duì)象

spool->releaseConnection(conn,”CN”);//釋放連接,同時(shí)標(biāo)記

env->terminateConnectionPool(spool); //銷毀連接池

?

?

statement對(duì)象:

?

1、標(biāo)準(zhǔn)

?

String sqlstmt = “SELECT author_id,author_name FROM author_tab order by

?

author_id;//occi數(shù)據(jù)類型

?

stmt=conn->createStatement(sqlstmt); //創(chuàng)建標(biāo)準(zhǔn)類型

?

ResultSet *rset=stmt->executeQuery(); //返回結(jié)果

?

Cout<<rset->getInt(1)<<rset->getSting(2); //第1、2列

?

Stmt->closeResultSet(rset);? //關(guān)閉

?

Conn->terminateStatement(stmt); //關(guān)閉

?

?執(zhí)行SQL語句時(shí)可執(zhí)行以下函數(shù):

?

execute():一般SQL語句,create\insert

?

executeUpdate():執(zhí)行DDL\DML語句

?

executeArrayUpdate():復(fù)雜的SQL語句

?

executeQuery():查詢

?

?setSQL()

?

?getSQL():獲取當(dāng)前執(zhí)行的SQL語句

?

?SQLException ex:捕捉發(fā)生錯(cuò)誤的異常;ex.getErrorCode()? ex.getMessage()

?

2、帶參數(shù)

?

Void insertBind(int c1,string c2)

?

{

?

?String sqlStmt=”INSERT INTO author_tab VALUES(:x,:y);

?

?Stmt=conn->createStatement(sqlStmt);? try{

?

? stmt->setInt(1,c1); stmt->setString(2,c2);stmt->executeUpdate();

?

}catch(SQLException ex)

?

{cout<<ex.getErrorCode()<<ex.getMessage();}

?

Conn->terminateStatement;

?

}

?

3、帶存儲(chǔ)過程的

?

A:調(diào)用過程:

?

Statement *stmt=con->createStatement(“BEGIN demo_proc(:v1,:v2,:v3)

?

END;”);//3參數(shù)

?

Cout<<stmt->getSQL();

?

stmt->setInt(1,10); stmt->setMaxParamSize(2,30); stmt->String(2,”IN”);

?

stmt->registerOutParam(3,OCCISTRING,30,””);

?

int updateCount= stmt->executeUpdate();

?

B:調(diào)用函數(shù):

?

Statement *stmt=con->createStatement(“BEGIN:a:=demo_proc(:v1,:v2,:v3)

?

END;”);//4參數(shù)

?

Cout<<stmt->getSQL();

?

stmt->setInt(2,10); stmt->setMaxParamSize(3,30); stmt->String(2,”IN”);

?

stmt->registerOutParam(1,OCCISTRING,30,””);

?

stmt->registerOutParam(4,OCCISTRING,30,””);

?

int updateCount= stmt->executeUpdate();

?

?

?

批量編輯數(shù)據(jù)

?

Statement *stmt=conn->createStatement(“INSERT INTO emp(empno,ename) VALUES(:1,:2)”);

?

stmt->setMaxIteration(10); //指定最多有多少個(gè)記錄時(shí)執(zhí)行executeUpdate

stmt->setMaxParamSize(2,100);? //指定最大的數(shù)據(jù)緩沖區(qū)

stmt->setInt(1,10001); stmt->setString(2,”john”); stmt->setIteartion();//加入緩沖區(qū)

stmt->executeUpdate();

?

?

?

操作流數(shù)據(jù)(getStream(),writeBuffer(),writeLastBuffer(),readBuffer(),

readLastBuffer())

數(shù)據(jù)類型BLOB、CLOB、LONG、LONG RAW 、RAW 、VARCHAR2的數(shù)據(jù)

為流數(shù)據(jù)

?

Statement *stmt=conn->creatStatement(“INSERT INTO testtab(longeo1) VALUES(:1)”);

?

stmt->setCharacterStreamMode(1,10000); stmt->executeUpdate();

?

Stream *instream= stmt->getStream(1); char buffer[10000];

?

instream->writeBuffer(buffer,len);instream->writeLastBuffer(buffer,len);

?

stmt->closeStream(instream);

?

?

?

事務(wù)的提交與回滾 Connection::commit();Connection::rollback()

自動(dòng)提交Statement::setAutoCommit(TRUE/FALSE);

?

Statement對(duì)象的緩沖區(qū):

?

1、連接對(duì)象的緩沖區(qū):

?

conn->setStmtCacheSize(10);? int csize=conn->getStmtSize();

conn->terminateStatemen(stme); stmt->disableCaching();

?

2、連接池緩沖區(qū):

?

conPool->setStmtCacheSize();

Metadata對(duì)象:查看數(shù)據(jù)庫對(duì)象的屬性與元數(shù)據(jù)

MetaData md=conn->getMetadata(“emp”,PTYPE_UNK);//建立對(duì)象

int objectType=md.getInt(Metadata::ATTY_OBJ_PTYPE);//對(duì)象類型

int columnCount=md.getInt(Metadata:ATTR_OBJ_NUM_COLS);//對(duì)象的字段數(shù)

Timestamp objts=md.getTimestamp(Metedata::ATTR_OBJ_TIMESTAMP);//時(shí)區(qū)

vector<MetaData>cols=md.getVector(Metadata::ATTR_LIST_COLUMS);//返回集

?

合對(duì)象

?

cols[0].getString(Metedata::ATTR_NAME);//第一個(gè)字段名

cols[0].getInt(Metedata::ATTR_DATA_TYPE);//第一個(gè)字段類型

Statement *stmt =conn->creatStatement(“select * from emo”);

ResultSet *rs=stmt->executeQuery();

Vector(MeteData) selectcols=rs->getColumnListMetaData();

int columnCount=selectcols.size();

for(int i=0;i<columnCount;i==)

{

cout<<selectcols[i].getString(MetaData::ATTR_NAME);

cout<<selectcols[i].getInt(MetaData::ATTR_DATA_TYPE);

}

總結(jié)

以上是生活随笔為你收集整理的VC使用OCCI开发的简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。