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

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

?? statement.cpp

?? 開發環境為VC++ 的數據庫管理系統
?? CPP
字號:
// OraLib 0.0.3 / 2002-06-30
//	statement.cpp
//
//	http://606u.dir.bg/
//	606u@dir.bg
#include "stdafx.h"

#include "_p.h"

#include "oralib.h"


namespace oralib {


statement::statement (
	IN connection &use,
	IN const char *sql_block,
	IN OPTIONAL int sql_len)	// = -1
{
	conn = &use;
	initialize ();
	try
	{
		prepare (
			sql_block,
			sql_len);
	}
	catch (...)
	{
		cleanup ();
		throw;
	}
}


statement::~statement ()
{
	cleanup ();
}


void
statement::initialize (void)
{
	stmt_handle = NULL;
	is_prepared = false;
	is_executed = false;
	type = ST_UNKNOWN;
}


void
statement::cleanup (void)
{
	if (stmt_handle)
	{
		// ignore return code - returns either OCI_SUCCESS or OCI_INVALID_HANDLE
		OCIHandleFree (
			stmt_handle,
			OCI_HTYPE_STMT);
		stmt_handle = NULL;
	}

	// remove bound parameters
	for (Parameters::iterator i=parameters.begin (); i!=parameters.end (); ++i)
		delete (*i);
	parameters.clear ();
}


void
statement::prepare (
	IN const char *sql_block,
	IN OPTIONAL int sql_len)	// = -1
{
	// prerequisites
	ASSERT (conn != NULL && sql_block != NULL);
	ASSERT (stmt_handle == NULL);	// otherwise old-one will never be released

	sword	result;

	// allocate statement handle
	result = OCIHandleAlloc (
		conn->environment_handle,
		(void **) &stmt_handle,
		OCI_HTYPE_STMT,
		0,		// extra memory to allocate
		NULL);	// pointer to user-memory

	if (result == OCI_SUCCESS)
	{
		if (sql_len == -1) sql_len = strlen (sql_block);

		result = OCIStmtPrepare (
			stmt_handle,
			conn->error_handle,
			(text *) sql_block,
			sql_len,
			OCI_NTV_SYNTAX,
			OCI_DEFAULT);
	}
	else
		throw (oralib::error (result, conn->environment_handle, __FILE__, __LINE__));

	if (result == OCI_SUCCESS)
	{
		ub2	stmt_type = 0;
		result = OCIAttrGet (
			stmt_handle,
			OCI_HTYPE_STMT,
			&stmt_type,
			NULL,	// ptr to storage size; required for strings, only
			OCI_ATTR_STMT_TYPE,
			conn->error_handle);
		// returns 0 (ST_UNKNOWN) if sql statement is wrong
		type = (StatementTypesEnum) stmt_type;
	}

	if (result == OCI_SUCCESS)
	{
		is_prepared = true;
		is_executed = false;
	}
	else
		throw (oralib::error (result, conn->error_handle, __FILE__, __LINE__));
}


void
statement::execute_prepared (void)
{
	// prerequisites
	ASSERT (conn != NULL && is_prepared);

	sword	result;
	ub4		iters;

	// direct select statement?
	iters = (type == ST_SELECT) ? 0 : 1;
	result = OCIStmtExecute (
		conn->svc_context_handle,
		stmt_handle,
		conn->error_handle,
		iters,	// number of iterations
		0,		// starting index from which the data in an array bind is relevant
		NULL,	// input snapshot descriptor
		NULL,	// output snapshot descriptor
		OCI_DEFAULT);

	if (result == OCI_SUCCESS)
		is_executed = true;
	else
		throw (oralib::error (result, conn->error_handle, __FILE__, __LINE__));
}


parameter&
statement::bind (
	IN const char *name,
	IN OPTIONAL DataTypesEnum type)	// = DT_UNKNOWN
{
	// prerequisites
	ASSERT (name);

	// could throw an exception
	parameter *p = new parameter (
		this,
		name,
		type,
		FETCH_SIZE);
	try
	{
		parameters.push_back (p);
		parameters_map [p->param_name] = p;
	}
	catch (...) // STL exception, perhaps
	{
		p->release ();
		throw;
	}
	return (*p);
}


resultset*
statement::select (void)
{
	// prerequisites
	ASSERT (is_prepared && type == ST_SELECT);

	execute ();
	resultset *r = new resultset (
		stmt_handle,
		conn);
	try
	{
		r->fetch_rows ();
		return (r);
	}
	catch (...)
	{
		if (r) delete r;
		throw;
	}
}


parameter&
statement::operator [] (const char *name)
{
	ParametersMap::iterator i = parameters_map.find (std::string (name));
	if (i == parameters_map.end ())
		// name not found in parameters
		throw (oralib::error (EC_PARAMETER_NOT_FOUND, __FILE__, __LINE__, name));
	return (*(i->second));
}


parameter&
statement::operator [] (ub2 parameter_index)
{
	if (parameter_index < FIRST_PARAMETER_NO ||
		parameter_index > parameters.size ())
		// no parameter with such index
		throw (oralib::error (EC_PARAMETER_NOT_FOUND, __FILE__, __LINE__, "%d", (int) parameter_index));
	return (*(parameters.at (parameter_index - FIRST_PARAMETER_NO)));
}


}; // oralib namespace

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品在线观看视频| 国产成人综合亚洲91猫咪| 中文字幕免费不卡在线| 日韩欧美国产wwwww| 4438x亚洲最大成人网| 色国产精品一区在线观看| 国产亚洲制服色| 久久免费视频色| 亚洲精品一区二区三区99| 精品国产精品网麻豆系列| 精品国产乱码久久久久久1区2区 | 欧美日韩在线播放三区四区| 一区av在线播放| 亚洲女同ⅹxx女同tv| 亚洲人成在线观看一区二区| 亚洲一区在线观看视频| 婷婷国产v国产偷v亚洲高清| 日韩vs国产vs欧美| 久久国产精品露脸对白| 国产成人免费网站| 91麻豆蜜桃一区二区三区| 欧美午夜寂寞影院| 精品成人一区二区三区四区| 久久久国产精品午夜一区ai换脸| 中文天堂在线一区| 亚洲国产另类精品专区| 激情五月播播久久久精品| 成人av网站免费观看| 在线观看精品一区| 欧美成人免费网站| 亚洲日本韩国一区| 麻豆精品新av中文字幕| 波多野结衣91| 日韩一级片在线播放| 国产精品天干天干在线综合| 一区二区三区精密机械公司| 激情六月婷婷综合| 欧美性淫爽ww久久久久无| 久久在线观看免费| 亚洲国产欧美另类丝袜| 国产精品伊人色| 欧美一区二区在线免费观看| 国产日韩精品一区二区三区| 日韩精品五月天| 成人a级免费电影| 精品国产乱码久久久久久老虎| 综合激情成人伊人| 国产高清无密码一区二区三区| 欧美亚洲自拍偷拍| 亚洲国产精品成人综合| 轻轻草成人在线| 欧美日韩一区不卡| 亚洲色图欧洲色图婷婷| 国产成人精品影视| 日韩欧美中文字幕一区| 亚洲综合在线电影| 国产成人av电影在线播放| 3d动漫精品啪啪一区二区竹菊| 中文字幕视频一区| 高清久久久久久| 久久综合久久综合亚洲| 日本sm残虐另类| 欧美乱妇15p| 亚洲一区二区三区小说| a在线欧美一区| 中文字幕 久热精品 视频在线 | 日韩精品一区二区三区在线播放 | 国产精品久久毛片| 国产v综合v亚洲欧| 国产欧美一区二区精品性色| 经典三级视频一区| 日韩精品一区二区三区在线播放| 日韩精品免费视频人成| 7777精品伊人久久久大香线蕉最新版 | 亚洲成a人片在线观看中文| 国产精品色噜噜| 粉嫩绯色av一区二区在线观看| 日韩欧美亚洲另类制服综合在线| 亚洲制服丝袜在线| 欧美日韩美女一区二区| 午夜视频在线观看一区| 欧美精品乱码久久久久久按摩 | 久久精品国产久精国产爱| 欧美日韩精品欧美日韩精品一综合| 亚洲视频一二三区| 91久久精品午夜一区二区| 一区二区三区丝袜| 欧美色国产精品| 日韩成人一级片| 日韩欧美国产麻豆| 成人黄色在线网站| 亚洲精品国产成人久久av盗摄| 欧美特级限制片免费在线观看| 亚洲午夜视频在线观看| 91麻豆精品国产无毒不卡在线观看| 日本不卡高清视频| 久久精品亚洲精品国产欧美| 99久久国产综合色|国产精品| 自拍av一区二区三区| 欧美日韩一区在线观看| 久久99国产精品免费| 国产精品私房写真福利视频| 欧美性受xxxx黑人xyx性爽| 精品无码三级在线观看视频| 中文字幕不卡三区| 欧美日韩成人激情| 国产高清亚洲一区| 亚洲午夜久久久久中文字幕久| 日韩欧美国产综合在线一区二区三区| 国产老女人精品毛片久久| 一区二区三区欧美视频| 欧美mv和日韩mv国产网站| 色哟哟一区二区在线观看| 奇米在线7777在线精品| 中文字幕亚洲电影| 欧美xxxxx牲另类人与| 在线中文字幕一区二区| 国产一区二区精品久久91| 一区二区三区成人在线视频| 2024国产精品视频| 欧美在线不卡一区| 成人一区二区三区视频 | 懂色av中文字幕一区二区三区| 一区二区三区欧美在线观看| 久久天天做天天爱综合色| 欧洲精品视频在线观看| 国产成人在线视频免费播放| 日韩高清不卡在线| 亚洲精品乱码久久久久久日本蜜臀| 欧美成人艳星乳罩| 欧美欧美欧美欧美| 欧美手机在线视频| 色妞www精品视频| 国产91精品久久久久久久网曝门| 日韩高清电影一区| 亚洲午夜久久久久中文字幕久| 中文字幕五月欧美| 中文av一区二区| 久久亚洲春色中文字幕久久久| 欧美久久久久免费| 欧美私人免费视频| 欧美性猛交一区二区三区精品| 成人av在线资源网| 成人深夜视频在线观看| 国产麻豆91精品| 国产一区二区免费在线| 狠狠v欧美v日韩v亚洲ⅴ| 奇米精品一区二区三区在线观看一| 亚洲亚洲人成综合网络| 一区二区三区欧美久久| 夜色激情一区二区| 午夜私人影院久久久久| 天天亚洲美女在线视频| 视频在线观看国产精品| 午夜精品久久久久久不卡8050| 亚洲一本大道在线| 日韩成人一区二区| 国产真实乱对白精彩久久| 国模娜娜一区二区三区| 国产一区视频导航| 成人av集中营| 一本一本大道香蕉久在线精品 | 日韩三级免费观看| 日韩欧美亚洲国产另类| 久久亚洲影视婷婷| 中文子幕无线码一区tr | 这里只有精品电影| 91精品国产欧美一区二区18| 制服丝袜日韩国产| 国产亚洲美州欧州综合国| 欧美国产精品v| 亚洲自拍与偷拍| 久久精品国产亚洲一区二区三区| 麻豆精品国产传媒mv男同 | 91猫先生在线| 欧美日韩成人激情| 久久久不卡影院| 一区二区在线观看不卡| 日韩电影在线观看网站| 国产乱一区二区| 在线看日韩精品电影| 日韩欧美一区在线| 国产精品丝袜一区| 青青草原综合久久大伊人精品 | 秋霞电影网一区二区| 国产福利一区在线观看| 色av一区二区| 日韩美女在线视频| 一区二区高清免费观看影视大全 | 99久久99久久免费精品蜜臀| 91福利国产成人精品照片| 日韩欧美国产综合一区 | 国产欧美精品一区二区色综合 | 久久99精品久久久久久国产越南| 国产99一区视频免费| 欧美日韩中文字幕一区二区| 亚洲精品在线观看网站| 亚洲曰韩产成在线| 国产91精品久久久久久久网曝门| 欧美精选在线播放|