亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? connection.cpp

?? oracle引用庫
?? CPP
字號:
#define __OCICPP_INTERNAL_USE_#include "Connection.h"/*! \class OCICPP::Connection  \brief Encapsulate a connection to a database instance  By creating a connection to a database, a programm can interact with a  database instance by the access right associated to the connection.  A connection can be initialized by db::connect() *//*!  Create a connection to a database instance describe by \a tnsname . For   authertification \a user and \a password are being used. As optional  parameter, an Oracle-Environment \a env may be set for this connection.  \sa db::connect() */OCICPP::Connection::Connection(OCIEnv *env,const string &tnsname,const string &user,const string &password) {	init(env,tnsname,user,password);}/*!  Default constructor. The connection is not connected to any database  instance.  \sa db::connect() */OCICPP::Connection::Connection():envhp(0),srvhp(0),errhp(0),svchp(0),authp(0) { }/*!  Initialized a connection to the database specified by \a tnsnames for user  \a user identified by password \a password . An optional Oracle environment  \a env may be passed to the oracle server. */void OCICPP::Connection::init(OCIEnv *env,const string &tnsname,const string &user,const string &password) {	envhp=env; srvhp=0; errhp=0; svchp=0; authp=0; trans=0; 	(void) OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &errhp, OCI_HTYPE_ERROR, (size_t) 0, (dvoid **) 0);	(void) OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &srvhp, OCI_HTYPE_SERVER, (size_t) 0, (dvoid **) 0);	(void) OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &svchp, OCI_HTYPE_SVCCTX, (size_t) 0, (dvoid **) 0);	CHECKERR(errhp,OCIServerAttach( srvhp, errhp, (text *)tnsname.c_str(), strlen(tnsname.c_str()), 0));	(void) OCIAttrSet( (dvoid *) svchp, OCI_HTYPE_SVCCTX, (dvoid *)srvhp, (ub4) 0, OCI_ATTR_SERVER, (OCIError *) errhp);	(void) OCIHandleAlloc((dvoid *) envhp, (dvoid **)&authp, (ub4) OCI_HTYPE_SESSION, (size_t) 0, (dvoid **) 0);	(void) OCIAttrSet((dvoid *) authp, (ub4) OCI_HTYPE_SESSION, (dvoid *) user.c_str(), (ub4) strlen(user.c_str()), (ub4) OCI_ATTR_USERNAME, errhp);	(void) OCIAttrSet((dvoid *) authp, (ub4) OCI_HTYPE_SESSION, (dvoid *) password.c_str(), (ub4) strlen(password.c_str()), (ub4) OCI_ATTR_PASSWORD, errhp);	CHECKERR(errhp,OCISessionBegin ( svchp, errhp, authp, OCI_CRED_RDBMS, (ub4) OCI_DEFAULT));	(void) OCIAttrSet((dvoid *) svchp, (ub4) OCI_HTYPE_SVCCTX, (dvoid *) authp, (ub4) 0, (ub4) OCI_ATTR_SESSION, errhp);	(void) OCIHandleAlloc((dvoid *)envhp, (dvoid **)&trans, OCI_HTYPE_TRANS, 0, 0);	(void) OCIAttrSet((dvoid *)svchp, OCI_HTYPE_SVCCTX, (dvoid *)trans, 0, OCI_ATTR_TRANS, errhp);	Initialized=1;}/*!  Destructor. If a connection has been estabilshed previously, this connection  is being erased. */OCICPP::Connection::~Connection() {	drop();}/*!  Drop the connection to the database, if a connection had been estabilshed  previously. */void OCICPP::Connection::drop() {	if(Initialized) {			if(envhp && errhp && svchp && authp) {			OCIHandleFree(trans,OCI_HTYPE_TRANS);			CHECKERR(errhp,OCISessionEnd(svchp,errhp,authp,OCI_DEFAULT));			OCIHandleFree(authp,OCI_HTYPE_SESSION);			CHECKERR(errhp,OCIServerDetach(srvhp,errhp,OCI_DEFAULT));			OCIHandleFree(svchp,OCI_HTYPE_SVCCTX);			OCIHandleFree(srvhp,OCI_HTYPE_SERVER);			OCIHandleFree(errhp,OCI_HTYPE_ERROR);		}	}	Initialized=0;}/*!  Execute a query (an SQL-Statement) \a query on the previously initialized  database connection. A cursor is returned as a result. The user is  responsible for destroying this cursor if it is not required any more.  \sa void execQuery(const string &,Cursor &,int) */OCICPP::Cursor *OCICPP::Connection::execQuery(const std::string &query) {	DEBUG(DLEV_INFO,"executing %s\n",query.c_str());	Cursor *cur=(Cursor *) 0;	try {		cur=new Cursor(envhp,svchp,errhp,1);		if(cur->prepare(query)==OCI_STMT_SELECT) {			cur->exec();			cur->describe();			cur->define();		} else { // It was non-select request does not supported etall yet 			DEBUG(DLEV_DEBUG,"Execute Non-select stmt\n");			cur->exec(); 		}	} catch(OraError err) {		delete cur;		throw; /* tell to application error occured */	}	DEBUG(DLEV_DEBUG,"Query Executed successfully\n");	return cur;}/*!  Execute a query (an SQL-statement) \a query on the database server. All  relevant information are store within the reference \a cur to a cursor  object. \a prefetch stores, how many rows are to be fetched when executing  Cursor::fetch() for the created cursor.  \sa Cursor *execQuery(const string &) */void OCICPP::Connection::execQuery(const std::string &query,OCICPP::Cursor &cur,int prefetch=1) {	DEBUG(DLEV_INFO,"executing %s\n",query.c_str());	cur.init(envhp,svchp,errhp,prefetch);	if(cur.prepare(query)==OCI_STMT_SELECT) {		cur.exec();		cur.describe();		cur.define();	} else { // It was non-select request does not supported etall yet 		cur.exec(); 	}	DEBUG(DLEV_DEBUG,"Query Executed successfully\n");}/*!  Execute an update statement \a request on the database server. This method  can be used to execute \b UPDATE, \b INSERT and \b DELETE SQL statements,  which are not returning a cursor. */void OCICPP::Connection::execUpdate(const std::string &request) {	DEBUG(DLEV_INFO,"executed %s\n",request.c_str());	Cursor *cur=(Cursor *) 0;	try {		cur=new Cursor(envhp,svchp,errhp,1);		cur->prepare(request);		cur->exec();		delete cur;	} catch (OraError err) {		delete cur;		throw; /* Tell to application error occured */	}}unsigned int OCICPP::Connection::execQueryEx(const std::string &query,OCICPP::Cursor &cur,int prefetch=1) {	unsigned int nRet = 0;	DEBUG(DLEV_INFO,"executing %s\n",query.c_str());	cur.init(envhp,svchp,errhp,prefetch);	if(cur.prepare(query)==OCI_STMT_SELECT) {		nRet = cur.execEx();		cur.describe();		cur.define();	} else { // It was non-select request does not supported etall yet		nRet = cur.execEx();	}	return nRet;}unsigned int OCICPP::Connection::execUpdateEx(const std::string &request){	unsigned int nRet = 0;	DEBUG(DLEV_INFO,"executed %s\n",request.c_str());	Cursor *cur=(Cursor *) 0;	try {		cur=new Cursor(envhp,svchp,errhp,1);		cur->prepare(request);		nRet = cur->execEx();		delete cur;	} catch (OraError err) {		delete cur;		throw; /* Tell to application error occured */	}	return nRet;}/*!  Start a new transaction */void OCICPP::Connection::transStart(int flags=SERIALIZABLE) {	CHECKERR(errhp,OCITransStart(svchp,errhp,(uword) 0,flags)); /* Detaching is not supperted yet so timeout is ignored */}/*!  Commit (accept) a previously started transaction. The transaction ends with  either being committed or rolled back.  \sa transStart(), transCommit(), transRollback() */void OCICPP::Connection::transCommit() {	CHECKERR(errhp,OCITransCommit(svchp,errhp,OCI_DEFAULT));}/* Hm... we should pass a dvoid * to Rollback and OCISvcCtx to Commit isn't it an architecture bug ? *//* It was a bug in documentation $ORACLE_HOME/rdbms/demo/ociap.h contains this prototype of OCITransRollback() :   sword   OCITransRollback  (OCISvcCtx *svchp, OCIError *errhp, ub4 flags);and here's a documentation prototype:   sword   OCITransRollback  (dvoid *svchp, OCIError *errhp, ub4 flags);*//*!  Roll back a previously started transaction. The transaction ends with  either being committed or rolled back.  \sa transStart(), transCommit(), transRollback() */void OCICPP::Connection::transRollback() {	CHECKERR(errhp,OCITransRollback(svchp,errhp,OCI_DEFAULT));}/*!  Prepare and SQL-Statement \a sql. The cursor \a cur is accordingly  initialized. For fetch-operations, an amount or rows to be prefetched  \a prefetch may be specified. */void OCICPP::Connection::prepare(const std::string &sql,OCICPP::Cursor &cur,int prefetch=1) {	cur.init(envhp,svchp,errhp,prefetch);	cur.prepare(sql);}/*!  Initialize the queue-instance \a queue to represent the advanced database  queue named \a queue_name. */void OCICPP::Connection::getQueue(std::string& queue_name, OCICPP::AQQueue& queue) {	queue.init(queue_name, envhp, svchp, errhp);}/*!   Create new BFile \a bfile , placed in directory \a dir with name \a fname.  The directory should be created first on server, and file should exist at his  place.*/void OCICPP::Connection::createBFile(const string &dir,const string &fname,									BFile &bfile) {	bfile.init(envhp,svchp,errhp,dir,fname);}#if ( OCILIBVERMAJOR>=8 && OCILIBVERMINOR>=1 ) || DOXYGEN/*!   Create a temporary large object (see class TLob) of type \a lobtype with  caching mode \a cachemode. The temporary LOB structure \a lob is initialized  during this call  \param lobtype \c OCICPP::CLOB and \c OCICPP::BLOB are supported  \param cachmode \c OCICPP::CACHE_ON or \c OCICPP::CACHE_OFF is supported  \ora8i_fn*/void OCICPP::Connection::createTLob(OCICPP::LobType lobtype,OCICPP::CacheMode cachemode,									TLob &tlob) {	tlob.init(envhp,svchp,errhp,lobtype,cachemode);}#endif 		/*!   Returns the identification string of the Oracle server associated to this  connection.*/string OCICPP::Connection::serverVersion() {	char buf[1024];	CHECKERR(errhp,OCIServerVersion((dvoid *)srvhp,errhp,(OraText *)buf,1023,OCI_HTYPE_SERVER));	return string(buf);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品夜色噜噜亚洲a∨| 色哟哟在线观看一区二区三区| 欧美福利视频导航| 视频一区视频二区中文字幕| 91精品视频网| 奇米精品一区二区三区四区| 日韩一级二级三级| 久久av老司机精品网站导航| 久久久99精品免费观看不卡| 国产69精品久久久久毛片| 国产日韩欧美制服另类| 99国产精品久久| 玉足女爽爽91| 91精品国产一区二区| 国产一区二区精品在线观看| 欧美韩国日本一区| 91在线国产观看| 亚洲欧美激情一区二区| 欧美日韩精品系列| 美女视频黄久久| 国产亚洲精品福利| 色诱亚洲精品久久久久久| 日日摸夜夜添夜夜添亚洲女人| 欧美成人女星排行榜| 丰满放荡岳乱妇91ww| 亚洲最新在线观看| 欧美va亚洲va国产综合| 白白色 亚洲乱淫| 视频一区二区三区在线| 久久久91精品国产一区二区三区| 91精品福利在线| 另类小说欧美激情| 亚洲三级免费电影| 精品免费一区二区三区| 99免费精品在线| 六月丁香婷婷色狠狠久久| 亚洲美女视频在线| 精品少妇一区二区三区在线播放| av影院午夜一区| 美美哒免费高清在线观看视频一区二区| 国产亚洲精品福利| 欧美美女黄视频| gogogo免费视频观看亚洲一| 天堂蜜桃一区二区三区 | 欧美成人猛片aaaaaaa| 丰满亚洲少妇av| 日本不卡高清视频| 亚洲欧美激情在线| 国产目拍亚洲精品99久久精品| 欧美制服丝袜第一页| 成人污污视频在线观看| 欧美aⅴ一区二区三区视频| 日韩美女久久久| 久久久久久9999| 91精品国产综合久久精品性色| 91在线视频免费观看| 精品一区二区成人精品| 亚洲一区二区在线免费观看视频| 国产日本一区二区| 精品久久一区二区| 欧美一级黄色录像| 91电影在线观看| 色综合咪咪久久| www.综合网.com| 国产精一区二区三区| 美女一区二区视频| 美女www一区二区| 丝瓜av网站精品一区二区| 亚洲精品成人天堂一二三| 欧美国产丝袜视频| 久久精品视频在线看| 精品美女在线观看| 精品国一区二区三区| 日韩一级片网站| 日韩亚洲欧美中文三级| 欧美高清精品3d| 欧美绝品在线观看成人午夜影视| 在线观看av一区二区| 91久久免费观看| 91丝袜美腿高跟国产极品老师 | 国产日韩高清在线| 久久久精品日韩欧美| www激情久久| 久久久久久久久久久电影| 欧美zozozo| 26uuu亚洲综合色| 久久久久成人黄色影片| 国产欧美精品日韩区二区麻豆天美| 欧美精品一区视频| 久久久另类综合| 久久精品视频网| 国产精品二三区| 亚洲欧美乱综合| 午夜在线电影亚洲一区| 午夜精品福利一区二区三区av| 婷婷综合五月天| 久久精品免费看| 国产福利精品导航| 一本一道综合狠狠老| 欧美主播一区二区三区| 欧美一区二区在线免费观看| 2020国产精品| 中文字幕日韩一区二区| 亚洲一区二区三区四区在线观看| 日韩福利电影在线| 国产在线精品一区在线观看麻豆| 大白屁股一区二区视频| 91网站在线观看视频| 在线不卡中文字幕| 久久色在线观看| 亚洲美女视频一区| 麻豆精品视频在线观看视频| 国产99一区视频免费| 日本韩国欧美三级| 欧美xxx久久| 亚洲精品视频一区二区| 蜜臀精品一区二区三区在线观看| 国产精品中文字幕日韩精品| 91在线观看视频| 日韩精品中文字幕在线一区| 成人欧美一区二区三区白人| 天天综合色天天综合色h| 国产成人午夜精品5599| 欧美日韩午夜在线| 日本一区二区成人| 日韩不卡一二三区| 成人高清视频免费观看| 日韩视频中午一区| 亚洲人亚洲人成电影网站色| 免费的国产精品| 色综合色综合色综合色综合色综合| 制服丝袜中文字幕一区| 综合久久一区二区三区| 精品制服美女丁香| 日本韩国精品在线| 欧美国产日产图区| 狠狠色丁香久久婷婷综| 欧美在线观看一区二区| 欧美韩国日本综合| 久久精品国产澳门| 欧美日韩国产精选| 亚洲免费毛片网站| 国产高清无密码一区二区三区| 欧美日本在线一区| 亚洲精品视频在线看| 国产a精品视频| 欧美成人艳星乳罩| 午夜精品久久久久影视| 色综合久久88色综合天天6| 精品国产乱码久久久久久久| 爽好多水快深点欧美视频| 99久久99久久精品免费观看| 久久久精品日韩欧美| 美女视频免费一区| 欧美一级在线观看| 亚洲电影第三页| 欧美亚洲日本一区| 亚洲综合一区二区| 色综合久久久久久久久久久| 成人欧美一区二区三区在线播放| 国产69精品久久777的优势| 久久久激情视频| 蜜桃精品视频在线观看| 欧美精品精品一区| 亚洲图片有声小说| 91搞黄在线观看| 亚洲欧美国产三级| 欧美午夜影院一区| 亚洲一区自拍偷拍| 色先锋资源久久综合| 亚洲欧洲制服丝袜| 色综合久久中文综合久久牛| 中文字幕中文字幕一区二区| 成人av资源下载| 亚洲视频一二三区| 色吊一区二区三区| 亚洲午夜三级在线| 欧美日韩国产经典色站一区二区三区| 性久久久久久久久久久久| 欧美一区二区播放| 精品午夜久久福利影院| 久久精品网站免费观看| 成人av一区二区三区| 亚洲男女一区二区三区| 欧美日韩一区不卡| 婷婷夜色潮精品综合在线| 91精品国产福利| 国产美女精品在线| 国产精品日韩成人| 欧洲av一区二区嗯嗯嗯啊| 视频一区中文字幕国产| 久久综合精品国产一区二区三区| 粉嫩一区二区三区在线看| 一区二区视频在线| 欧美顶级少妇做爰| 国产成人精品一区二区三区网站观看 | 亚洲小说欧美激情另类| 欧美一区中文字幕| 高清国产一区二区三区| 一二三四社区欧美黄|