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

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

?? error.cpp

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

#include "_p.h"

#include "oralib.h"


namespace oralib {


error::error (
	IN sword ora_err,
	IN OCIError *error_handle,
	IN OPTIONAL const char *source_name,	// = NULL
	IN OPTIONAL long line_number,			// = -1
	IN OPTIONAL const char *format,			// = NULL
	...)
{
	// sets-up ora_code and description
	oracle_error (
		ora_err,
		error_handle,
		NULL);
	
	// concat user-specified details
	if (format)
	{
		va_list	va;
		va_start (va, format);
		concat_message (format, va);
		va_end (va);
	}

	type = ET_ORACLE;
	winapi_code = 0;
	source = source_name;
	line_no = line_number;
}


error::error (
	IN sword ora_err,
	IN OCIEnv *env_handle,
	IN OPTIONAL const char *source_name,	// = NULL
	IN OPTIONAL long line_number,			// = -1
	IN OPTIONAL const char *format,			// = NULL
	...)
{
	// sets-up ora_code and description
	oracle_error (
		ora_err,
		NULL,
		env_handle);

	// concat user-specified details
	if (format)
	{
		va_list	va;
		va_start (va, format);
		concat_message (format, va);
		va_end (va);
	}

	type = ET_ORACLE;
	winapi_code = 0;
	source = source_name;
	line_no = line_number;
}


error::error (
	IN sword oralib_err,
	IN OPTIONAL const char *source_name,	// = NULL
	IN OPTIONAL long line_number,			// = -1
	IN OPTIONAL const char *format,			// = NULL
	...)
{
	// sets-up code and description
	oralib_error (oralib_err);

	// concat user-specified details
	if (format)
	{
		va_list	va;
		va_start (va, format);
		concat_message (format, va);
		va_end (va);
	}

	type = ET_ORALIB;
	ora_code = 0;
	winapi_code = 0;
	source = source_name;
	line_no = line_number;
}


#if	defined (_WIN32) // Windows platform only
error::error (
	IN OPTIONAL const char *source_name,	// = NULL
	IN OPTIONAL long line_number,			// = -1
	IN OPTIONAL const char *format,			// = NULL
	...)
{
	// sets-up winapi_code and description
	winapi_error ();

	// concat user-specified details
	if (format)
	{
		va_list	va;
		va_start (va, format);
		concat_message (format, va);
		va_end (va);
	}

	type = ET_WINAPI;
	code = 0;
	ora_code = 0;
	source = source_name;
	line_no = line_number;
}
#endif // defined (_WIN32)


// copy constructor
error::error (
	IN const error& err)
	:
	type (err.type),
	code (err.code),
	ora_code (err.ora_code),
#if	defined (_WIN32)
	winapi_code (err.winapi_code),
#endif
	description (err.description),
	source (err.source),
	line_no (err.line_no)
{
	type = err.type;

}


error::~error ()
{
}


void
error::oracle_error (
	IN sword ora_err,
	IN OCIError *error_handle,
	IN OCIEnv *env_handle)
{
	bool	get_details = false;

	// prerequisites
	ASSERT (error_handle != NULL || env_handle != NULL);

	code = ora_err;
	switch (ora_err)
	{
	case	OCI_SUCCESS:
		description = "(OCI_SUCCESS)";
		break;

	case	OCI_SUCCESS_WITH_INFO:
		description = "(OCI_SUCCESS_WITH_INFO)";
		get_details = true;
		break;
	
	case	OCI_ERROR:
		description = "(OCI_ERROR)";
		get_details = true;
		break;
	
	case	OCI_NO_DATA:
		description = "(OCI_NO_DATA)";
		get_details = true;
		break;
	
	case	OCI_INVALID_HANDLE:
		description = "(OCI_INVALID_HANDLE)";
		break;
	
	case	OCI_NEED_DATA:
		description = "(OCI_NEED_DATA)";
		break;
	
	case	OCI_STILL_EXECUTING:
		description = "(OCI_STILL_EXECUTING)";
		get_details = true;
		break;
	
	case	OCI_CONTINUE:
		description = "(OCI_CONTINUE)";
		break;
	
	default:
		description = "unknown";
	}

	// get detailed error description
	if (get_details)
	{
		const int	max_text_len = 4000;
		char	*error_text = new char [max_text_len];

		if (error_text)
		{
			*error_text = '\0';
			if (error_handle)
				OCIErrorGet (
					error_handle,		// error handle (or environment handle)
					1,					// record to seek for (first is 1)
					NULL,				// sqlstate; not supported in 8.x
					&ora_code,			// ORA-xxxx error returned
					reinterpret_cast<text *> (error_text),
					max_text_len,
					OCI_HTYPE_ERROR);	// handle type
			else
				OCIErrorGet (
					env_handle,
					1,
					NULL,
					&ora_code,
					reinterpret_cast<text *> (error_text),
					max_text_len,
					OCI_HTYPE_ENV);

			description += " ";
			description += error_text;
			delete [] error_text;
		}
	}
}


void
error::oralib_error (
	IN sword oralib_err)
{
	code = oralib_err;
	switch (oralib_err)
	{
	case	EC_ENV_CREATE_FAILED:
		description = "(EC_ENV_CREATE_FAILED) Environment handle creation failed";
		break;

	case	EC_TIMEOUT:
		description = "(EC_TIMEOUT) Statement took too long to complete and has been aborted";
		break;

	case	EC_NO_MEMORY:
		description = "(EC_NO_MEMORY) Memory allocation request has failed";
		break;

	case	EC_BAD_PARAM_TYPE:
		description = "(EC_BAD_PARAM_TYPE) Parameter type is incorrect";
		break;

	case	EC_POOL_NOT_SETUP:
		description = "(EC_POOL_NOT_SETUP) Connection pool has not been setup yet";
		break;

	case	EC_BAD_INPUT_TYPE:
		description = "(EC_BAD_INPUT_TYPE) Input data doesn't have expected type";
		break;

	case	EC_BAD_OUTPUT_TYPE:
		description = "(EC_BAD_OUTPUT_TYPE) Cannot convert to requested type";
		break;

	case	EC_BAD_TRANSFORM:
		description = "(EC_BAD_TRANSFORM) Requested transformation is not possible";
		break;

	case	EC_BAD_PARAM_PREFIX:
		description = "(EC_BAD_PARAM_PREFIX) Parameter prefix is not known";
		break;

	case	EC_INTERNAL:
		description = "(EC_INTERNAL) Internal library error. Please, report to developers";
		break;

	case	EC_UNSUP_ORA_TYPE:
		description = "(EC_UNSUP_ORA_TYPE) Unsupported Oracle type - cannot be converted to numeric, date or text";
		break;

	case	EC_PARAMETER_NOT_FOUND:
		description = "(EC_PARAMETER_NOT_FOUND) Name not found in statement's parameters";
		break;

	case	EC_COLUMN_NOT_FOUND:
		description = "(EC_COLUMN_NOT_FOUND) Result set doesn't contain column with such name";
		break;

	default:
		description = "unknown";
	}
}


#if	defined (_WIN32) // Windows platform only
void
error::winapi_error (void)
{
	DWORD	dwRet;
	char	*error_text = NULL;

	// get last error's code
	winapi_code = GetLastError ();

	// get error message from the system
	dwRet = FormatMessage (
		FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
		NULL,					// message source
		winapi_code,			// message id
		MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),	// language id - default language
		(LPTSTR) &error_text,	// address of pointer to output buffer
		0,						// max size of output buffer
		NULL);					// va_list arguments

	if (error_text)
	{
		description = error_text;
		LocalFree ((HLOCAL) error_text);
	}
}
#endif // defined (_WIN32)


#if	!defined (ORALIB_NO_ERROR_DISPLAY)
void
error::display (void)
{
	static const char *error_types_text [] =
	{
		"unknown", "Oracle", "OraLib", "Win32 API"
	};

	std::cout
		<< "Source: " << source << ", line " << line_no << "\n"
		<< "Error type: " << error_types_text [type] << "\n"
		<< "Code: " << code << "\n"
		<< "Oracle error code: " << ora_code << "\n"
		<< "Win32 API error code: " << winapi_code << "\n"
		<< "Description: " << description << "\n";
}
#endif // !defined (ORALIB_NO_ERROR_DISPLAY)


std::string
error::details (void) const
{
	static const char *error_types_text [] =
	{
		"unknown", "Oracle", "OraLib", "Win32 API"
	};

	return (
		"Error type: " + std::string (error_types_text [type]) + "Description: " + description );
}


void
error::concat_message (
	IN const char *format,
	IN va_list va)
{
	// prerequisites
	ASSERT (format && va);

	char	*buffer = new char [ERROR_FORMAT_MAX_MSG_LEN];
	if (buffer)
	{
		// _vsnprintf - printf-like, with max buffer length and va_list input
		_vsnprintf (
			buffer,
			ERROR_FORMAT_MAX_MSG_LEN - 1,
			format,
			va);
		description += ": ";
		description += buffer;
		delete [] buffer;
	}
}


}; // oralib namespace

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷拍一区二区三区四区| 日韩国产一区二| 国产日韩欧美在线一区| 欧美一级精品在线| 欧美日韩一区二区三区四区| 欧美在线制服丝袜| 欧美亚洲国产一区二区三区 | 日韩视频免费观看高清在线视频| 欧美综合亚洲图片综合区| 在线视频观看一区| 欧美在线不卡一区| 91精品婷婷国产综合久久| 欧美日韩电影在线播放| 日韩一级精品视频在线观看| 精品国产一二三区| 国产亚洲精品aa午夜观看| 中文av一区特黄| 一区二区欧美在线观看| 青青草国产精品97视觉盛宴| 国产乱码精品一区二区三区忘忧草| 国产成人欧美日韩在线电影| 色婷婷一区二区| 日韩欧美国产精品一区| 国产日韩欧美a| 亚洲综合无码一区二区| 轻轻草成人在线| 99在线热播精品免费| 欧美日本在线看| 久久嫩草精品久久久精品| 综合网在线视频| 免费观看在线色综合| 播五月开心婷婷综合| 欧美欧美欧美欧美首页| 中文字幕精品一区二区三区精品| 亚洲综合成人在线| 国产精品综合在线视频| 欧美视频你懂的| 欧美国产禁国产网站cc| 天堂久久一区二区三区| 成人毛片视频在线观看| 欧美久久久一区| 国产精品动漫网站| 美女网站一区二区| 91久久精品日日躁夜夜躁欧美| 精品免费日韩av| 亚洲成人综合视频| 91免费版在线| 国产午夜精品福利| 蜜臀久久99精品久久久久宅男| 91伊人久久大香线蕉| 久久免费美女视频| 青青草原综合久久大伊人精品| 99久精品国产| 久久一区二区三区国产精品| 日一区二区三区| 91高清视频在线| 亚洲欧美经典视频| 粉嫩aⅴ一区二区三区四区五区| 91麻豆精品国产91久久久资源速度| 国产精品久久久久久久久图文区| 久久精品国产一区二区三区免费看| 欧美影视一区在线| 亚洲精选视频在线| 99精品久久久久久| 久久美女艺术照精彩视频福利播放 | 日韩精品在线网站| 亚洲动漫第一页| 欧美三区在线观看| 亚洲午夜精品久久久久久久久| 色综合婷婷久久| 亚洲日本va午夜在线影院| 粉嫩一区二区三区在线看| 日韩欧美另类在线| 久久丁香综合五月国产三级网站| 欧美裸体一区二区三区| 亚洲成va人在线观看| 欧美久久久影院| 日韩电影在线免费观看| 日韩一区二区免费视频| 久久精品av麻豆的观看方式| 精品三级在线观看| 国内精品不卡在线| 亚洲国产精品t66y| 91丨九色porny丨蝌蚪| 亚洲天堂免费在线观看视频| 99国产麻豆精品| 亚洲最大成人网4388xx| 欧美日韩国产成人在线免费| 日本在线播放一区二区三区| 欧美一级片在线| 国产精品18久久久久久久久| 欧美激情自拍偷拍| 色婷婷av一区| 石原莉奈一区二区三区在线观看| 日韩亚洲欧美高清| 国产传媒久久文化传媒| 国产精品久久久久久久久图文区 | 亚洲123区在线观看| 91精品在线观看入口| 久久精品国产精品亚洲红杏| 久久综合久久综合亚洲| 99国产一区二区三精品乱码| 亚欧色一区w666天堂| 日韩一区二区三区视频在线观看| 久久国产乱子精品免费女| 国产精品美女久久久久久2018 | 国产麻豆成人精品| 中文字幕制服丝袜成人av | 欧美aaaaaa午夜精品| 久久久国产精华| 色婷婷香蕉在线一区二区| 在线亚洲一区二区| 欧美精品一区二区三区在线| 99精品国产视频| 精品亚洲欧美一区| 成人欧美一区二区三区黑人麻豆| 在线成人午夜影院| 成人免费av在线| 日本色综合中文字幕| 91啪亚洲精品| 91精品一区二区三区久久久久久| 不卡的电影网站| 免费的国产精品| 亚洲国产欧美日韩另类综合| 久久精品综合网| 日韩一区二区三区在线观看| 亚洲综合清纯丝袜自拍| 国产日韩综合av| 亚洲成av人片一区二区梦乃| 91视频在线看| 粉嫩绯色av一区二区在线观看| 青青草一区二区三区| 亚洲h动漫在线| 亚洲欧美日韩中文字幕一区二区三区| 日韩免费高清视频| 色欧美乱欧美15图片| 成人免费毛片a| 国产乱妇无码大片在线观看| 日本成人中文字幕| 一区二区免费在线播放| 中文在线免费一区三区高中清不卡| 欧美一级一区二区| 6080日韩午夜伦伦午夜伦| 色婷婷亚洲婷婷| 91免费视频网| 成a人片国产精品| 成人小视频在线| 成人小视频免费在线观看| 国产在线精品一区二区夜色| 蜜臀久久久久久久| 日韩和欧美一区二区| 97超碰欧美中文字幕| 99精品在线观看视频| 99riav一区二区三区| av一区二区三区四区| 99精品偷自拍| 在线观看视频一区二区欧美日韩| 91一区二区在线| 色婷婷综合久久久久中文一区二区 | eeuss鲁片一区二区三区在线看| 国产成人精品1024| 成人h动漫精品一区二区| 99精品视频免费在线观看| eeuss鲁片一区二区三区| 色av综合在线| 欧美高清www午色夜在线视频| 欧美一区在线视频| 久久麻豆一区二区| 最新成人av在线| 亚洲一区二区三区视频在线播放| 香蕉乱码成人久久天堂爱免费| 日韩成人dvd| 国产精品一区在线观看乱码| gogogo免费视频观看亚洲一| 在线观看中文字幕不卡| 欧美一区二区福利视频| 久久亚洲一区二区三区明星换脸 | 欧美中文字幕久久| 欧美一级爆毛片| 国产精品视频你懂的| 亚洲综合色丁香婷婷六月图片| 免费一级片91| 成人禁用看黄a在线| 欧美日韩国产中文| 久久久久久一二三区| 综合久久一区二区三区| 青青草国产成人99久久| 懂色av噜噜一区二区三区av| 欧美三级日本三级少妇99| 欧美精品一区二区久久久 | 欧美日韩成人在线一区| 久久午夜羞羞影院免费观看| 成人欧美一区二区三区在线播放| 丝袜国产日韩另类美女| 成人性生交大片免费看视频在线 | 日韩免费性生活视频播放| 最新欧美精品一区二区三区| 日韩电影在线一区二区| 91在线观看高清| 国产欧美一区二区精品秋霞影院|