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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tocci.h

?? tocci是用C編寫的建立在OCI基礎(chǔ)之上的對(duì)ORACLE的接口進(jìn)行調(diào)用,和OCCI操作類似,簡(jiǎn)化了OCI復(fù)雜的調(diào)用.在LINUX下使用.
?? H
字號(hào):
/*

Copyright (c) 2003, Confident Outsourcing
All rights reserved.

Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, 
this list of conditions and the following disclaimer. 

Redistributions in binary form must reproduce the above copyright notice, 
this list of conditions and the following disclaimer in the documentation 
and/or other materials provided with the distribution. 

Neither the name of the Confident Outsourcing nor the names of its 
contributors may be used to endorse or promote products derived from 
this software without specific prior written permission. 

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/
#ifndef __CC_TOCCI_H__
#define __CC_TOCCI_H__

/*
#	define _CRTDBG_MAP_ALLOC
#	include <stdlib.h>
#	include <crtdbg.h>
*/

/* 
	TOCCI
	Version 0.0.1-2
*/

#define TOCCI 0x00000102L

extern "C"
{
#ifndef	__STDC__
#	define	__STDC__	1
#	include <orid.h>
#	undef __STDC__
#endif
};

#if defined (_MSC_VER)
#	pragma warning (disable: 4786) // id truncated to '255' chars in the browser info
#endif

#include <string>
#include <map>
#include <vector>
using namespace std;

#define OCCICURSOR SQLT_RSET
#define OCCIUNSIGNED_INT SQLT_UIN

namespace oracle {
	namespace occi {
		//typedef string SQLTypeName;
		class Connection;
		class AnyData;
		
		class PObject {
		protected:
			//static char * SQLTypeName;
			void *ctx;
		public:
//			static const char* SQLTypeName;
			virtual string getSQLTypeName() const {throw(1);};
			PObject();
			PObject(void *ctxOCCI_);

			bool isNull();
			void setNull();

			virtual void writeSQL(oracle::occi::AnyData& streamOCCI_){};
			virtual void readSQL(AnyData& streamOCCI_){};

			void *operator new(size_t size);
			void *operator new(size_t size, const Connection * sess, const string& table, const string& name);
		};
		
		class SQLException : public PObject {
		public:
			SQLException(OCIError *err);
			SQLException(int code, char *msg);
			void setErrorCtx(void *c);
			int getErrorCode();
			const string& getMessage() const;
		private:
			string errmsg;
			int errcode;
		};


		class MetaData {
		public: 
			enum {Z, ATTR_NAME};
			string getString(int type);
			MetaData(const string &str);
		private:
			string name;
		};

		class Cell {
		public:
			void *ptr;
			int len;
			short type;
			Cell();
			~Cell();
		};

		class Statement;
		class ResultSet :public PObject {
		public:
			enum {END_OF_FETCH, DATA_AVAILABLE};
			int next();
			unsigned int getUInt(int pos);
			int getInt(int pos);
			const string getString(int pos);
			const vector<MetaData>& getColumnListMetaData() const;
			ResultSet();
			ResultSet(OCIStmt *st, OCIError *err);
			~ResultSet();
		private:
			OCIError *errhp;
			OCIStmt *stmt;
			map<int, Cell*> data;
			vector<MetaData> metadata;
		};

	class BindVariable {
	public: 
		OCIBind *bindhp;
		int type;
		void *data;
		int data_len;
		OCIType *oci_type;
		BindVariable(): bindhp(NULL),data(NULL),data_len(-1),oci_type(NULL) {}
		~BindVariable() {
			if (data!=NULL) free(data);
		}
	};

#define MAX_BINDS 16

	class Statement :public PObject{
		public:
			void setPrefetchRowCount(int pfc);
			void registerOutParam(int pos, int type);
			int executeUpdate();
			ResultSet *executeQuery();
			unsigned int getUInt(int pos);
			void setUInt(int pos, unsigned int val);
			void setString(int pos, const string &str);
			ResultSet * getCursor(int pos);
			void setVector(int pos, const vector<PObject*> &v, const char *type);
			bool getAutoCommit() const;
			void setAutoCommit(bool ac);

			Statement(Connection *con, const char *q);
			~Statement();
			void closeResultSet(ResultSet *rs);
			inline OCIStmt *getOCIStatement() const {return stmt;}
			inline OCIError *getOCIError() const {return errhp;}

		private: 
			string query;
			bool autoCommit;
			OCIEnv *envhp;
			OCIError *errhp;
			OCIStmt *stmt;
			OCISvcCtx *svchp;
			BindVariable var[MAX_BINDS];
		protected: 
		};

		class f_rw{
		public:
			void *fr(void *);
			void fw(void *, void *);
		};

		class Map {
		public:
			void put(const string& key, void *fr(void *), void fw(void *, void *)) {
			}
			Map() {}
		protected:
		private : 
		//	map<string, f_rw> m;
		};

		class Environment;
		class Connection  :public PObject{
		public: 
			void commit();
			void rollback();
			Statement * createStatement(const char *query) ;
			void terminateStatement(Statement *st);
			Connection(Environment *env, const char *login, const char *pass, const char *cstr);
			
			inline OCISvcCtx * getOCIServiceContext() const {return svchp;}
			inline Environment *getEnvironment() const {return environment;}
			~Connection();
		private:
			OCIEnv *envhp;
			OCIError *errhp;
			OCISvcCtx *svchp;
			Environment *environment;
		};


		class Environment :public PObject {
		public: 
			friend class SQLException;
			typedef int Mode;
			enum {
				DEFAULT = OCI_DEFAULT, 
				OBJECT=OCI_OBJECT, 
				SHARED=OCI_SHARED,
				NO_USERCALLBACKS=OCI_NO_UCB,
				THREADED_MUTEXED=OCI_THREADED, 
				THREADED_UNMUTEXED=OCI_THREADED | OCI_ENV_NO_MUTEX
			};

			static Environment *createEnvironment(Mode mode);
			Connection *createConnection(const char *login, const char *pass, const char *str) ;
			void terminateConnection(Connection *c);
			static void terminateEnvironment(Environment *e);

			Map *getMap();
			Environment(Mode m);
			Environment::~Environment();
			inline OCIEnv *getOCIEnviroment() const {return envhp;}
			inline OCIError *getOCIError() const {return errhp;}
		private:
			Mode mode;
			OCIEnv *envhp;
			OCIError *errhp;
			Map map;

		protected: 
		};
		

		/*add variant-like class implementation*/
		class AnyDataElement{
		public: 
			string name;
			int value;
			AnyDataElement(const string &n, const int v):name(n), value(v) {}
		};

		class AnyData : public PObject {
		public:
			AnyData(void *ctxOCCI_);
			void setNumber(int n);
			void setNumber(const string& name, int n);
		private:
			void *ctx;
		};

		void setVector(Statement *str, int pos, const vector<PObject*> &v, const char *type);
	} 

}

#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清不卡一区二区| 日韩va欧美va亚洲va久久| 欧美不卡一区二区三区四区| 欧美精品一区视频| 久久久精品中文字幕麻豆发布| 久久亚洲综合色一区二区三区| 欧美mv日韩mv| 国产三级精品视频| 亚洲视频免费看| 日本不卡一区二区三区| 国产精品中文字幕欧美| www.亚洲色图.com| 色视频一区二区| 精品99久久久久久| 亚洲精品伦理在线| 久久精品国产澳门| 91视频在线观看| 91精品国产综合久久久久久| 久久麻豆一区二区| 亚洲精品欧美激情| 国产盗摄视频一区二区三区| 欧美视频在线一区二区三区| 久久久91精品国产一区二区精品 | 亚洲伦理在线精品| 国产一区二区福利| 成人av免费在线观看| 欧美一级夜夜爽| 樱花影视一区二区| 成人av网站免费观看| 在线视频欧美精品| 亚洲色图欧美偷拍| 91在线视频免费观看| 777a∨成人精品桃花网| 亚洲男人的天堂在线观看| 日本在线播放一区二区三区| 欧美性猛交xxxx乱大交退制版 | 日本大胆欧美人术艺术动态| 欧美猛男男办公室激情| 一区二区三区精品在线| 99精品欧美一区二区三区综合在线| 欧美视频在线播放| 中文字幕一区不卡| 国产盗摄一区二区三区| 寂寞少妇一区二区三区| 国产精品大尺度| 亚洲一区二区在线免费看| 亚洲国产精品久久久久秋霞影院 | 亚洲va中文字幕| 性做久久久久久免费观看欧美| 日本中文字幕一区| 高清不卡在线观看av| 色香蕉成人二区免费| 欧美一区二区三区在线看| 激情图片小说一区| 午夜a成v人精品| 国内精品久久久久影院薰衣草| 色8久久精品久久久久久蜜| 欧美第一区第二区| 国产欧美日韩不卡| 麻豆国产欧美日韩综合精品二区| www.在线成人| 精品国产乱码久久久久久蜜臀| 国产女同互慰高潮91漫画| 亚洲一区二区在线观看视频| 国产一区二区在线观看免费| 欧美综合在线视频| 国产精品美女久久久久av爽李琼| 日本欧美在线观看| 99久久免费精品高清特色大片| 精品乱人伦小说| 蜜桃视频一区二区三区在线观看| 99re视频精品| 亚洲一区二区在线免费看| 国产成人免费视频网站| 国产嫩草影院久久久久| 大胆亚洲人体视频| 久久夜色精品国产噜噜av| 国产精品一二三在| 国产欧美日韩激情| 不卡的电影网站| 亚洲欧美经典视频| 国产精品99久久久久久宅男| 久久精品亚洲国产奇米99| 久久99久国产精品黄毛片色诱| 777午夜精品免费视频| 麻豆精品在线播放| 日本一区二区免费在线观看视频| 欧美午夜一区二区| 亚洲国产一区在线观看| 91麻豆免费在线观看| 亚洲久本草在线中文字幕| 9191成人精品久久| 乱一区二区av| 亚洲第一会所有码转帖| 欧美久久高跟鞋激| 成人免费的视频| 亚洲v精品v日韩v欧美v专区 | 制服丝袜成人动漫| 亚洲免费av在线| 国产亚洲欧美中文| 欧美精品乱码久久久久久| 国产成人精品一区二| 蜜桃av一区二区三区| 国产精品美女久久久久av爽李琼| 欧美日韩免费高清一区色橹橹 | 性感美女久久精品| 中文字幕亚洲一区二区va在线| 欧美成人高清电影在线| 欧美日本在线播放| 欧美三级日韩在线| 色综合久久综合中文综合网| 国产精品99久久久久久久女警| 蜜臀久久99精品久久久画质超高清 | 一区二区中文字幕在线| 欧美v国产在线一区二区三区| 欧美日本一道本在线视频| 在线成人小视频| 日韩欧美区一区二| 久久精品亚洲精品国产欧美kt∨| 日韩三级精品电影久久久| 欧美成人三级在线| 国产精品三级视频| 亚洲国产高清不卡| 亚洲乱码国产乱码精品精可以看| 一区二区三区在线免费观看| 国产精品国产三级国产专播品爱网| 精品理论电影在线| 日本一区二区电影| 一区二区三区欧美亚洲| 久久国产尿小便嘘嘘尿| 国产91精品一区二区麻豆网站| 95精品视频在线| 91麻豆精品国产91久久久| 欧美精品一区二区高清在线观看 | 国产乱人伦偷精品视频免下载 | 秋霞国产午夜精品免费视频| 99国产一区二区三精品乱码| 7777精品伊人久久久大香线蕉经典版下载| 欧美三级电影网站| 中文在线一区二区 | 中文字幕在线观看一区二区| 日韩电影免费一区| 99这里都是精品| 成人高清免费观看| 欧美一级二级在线观看| 国产精品久久综合| 久久国产精品露脸对白| 欧美日韩国产综合草草| 一区二区三区精密机械公司| 国产乱一区二区| 久久久久久亚洲综合| 九九国产精品视频| 欧美www视频| 国产乱人伦偷精品视频免下载| 欧美一级黄色片| 日产精品久久久久久久性色| 一本大道av伊人久久综合| 一区二区三区四区不卡视频| 欧美videossexotv100| 欧美美女喷水视频| 亚洲一区二区高清| 99在线视频精品| 亚洲精品伦理在线| 欧美性猛交xxxx乱大交退制版 | 久久疯狂做爰流白浆xx| 欧美成人三级电影在线| 日产国产高清一区二区三区| 26uuu亚洲综合色欧美 | 亚洲综合一区二区三区| 欧美精品国产精品| 免费三级欧美电影| 中文字幕欧美日本乱码一线二线| 色94色欧美sute亚洲线路一ni| 一区二区三区四区av| 精品国产乱子伦一区| 在线观看亚洲a| 另类成人小视频在线| 亚洲女厕所小便bbb| 精品少妇一区二区三区日产乱码| 亚洲欧美在线aaa| 成人福利在线看| 国产一区二区不卡老阿姨| 亚洲欧美自拍偷拍色图| 国产免费成人在线视频| 欧美色男人天堂| 欧洲精品一区二区| 激情小说欧美图片| 午夜精品在线看| 亚洲成人中文在线| 中文天堂在线一区| 国产欧美日韩另类视频免费观看 | 爽好多水快深点欧美视频| 国产欧美日韩另类视频免费观看| 欧美日韩成人综合在线一区二区| 成人免费福利片| 国产精品77777| 99re这里只有精品首页| 粗大黑人巨茎大战欧美成人| 国产一区二区三区在线观看精品| 一区二区欧美视频|