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

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

?? qresult.h

?? postgresql-odbc,跨平臺應(yīng)用
?? H
字號:
/* File:			qresult.h * * Description:		See "qresult.c" * * Comments:		See "notice.txt" for copyright and license information. * */#ifndef __QRESULT_H__#define __QRESULT_H__#include "psqlodbc.h"#include "connection.h"#include "socket.h"#include "columninfo.h"#include "tuple.h"#ifdef	__cplusplusextern	"C" {#endiftypedefenum	QueryResultCode_{	PORES_EMPTY_QUERY = 0,	PORES_COMMAND_OK,	/* a query command that doesn't return				 * anything was executed properly by the backend */	PORES_TUPLES_OK,	/* a query command that returns tuples				 * was executed properly by the backend, PGresult				 * contains the resulttuples */	PORES_COPY_OUT,	PORES_COPY_IN,	PORES_BAD_RESPONSE,	/* an unexpected response was recv'd from				 * the backend */	PORES_NONFATAL_ERROR,	PORES_FATAL_ERROR,	PORES_FIELDS_OK = 100,	/* field information from a query was				 * successful */	/* PORES_END_TUPLES, */	PORES_INTERNAL_ERROR} QueryResultCode;enum{	FQR_FETCHING_TUPLES = 1L	/* is fetching tuples from db */	,FQR_REACHED_EOF = (1L << 1)	/* reached eof */	,FQR_HAS_VALID_BASE = (1L << 2)};struct QResultClass_{	ColumnInfoClass *fields;	/* the Column information */	ConnectionClass *conn;		/* the connection this result is using								 * (backend) */	QResultClass	*next;		/* the following result class */	/* Stuff for declare/fetch tuples */	SQLULEN		num_total_read;	/* the highest absolute position ever read in + 1 */	SQLULEN		count_backend_allocated;/* m(re)alloced count */	SQLULEN		num_cached_rows;	/* count of tuples kept in backend_tuples member */	SQLLEN		fetch_number;	/* 0-based index to the tuple to read next */	SQLLEN		cursTuple;	/* absolute current position in the servr's cursor used to retrieve tuples from the DB */	SQLULEN		move_offset;	SQLLEN		base;		/* relative position of rowset start in the current data cache(backend_tuples) */	UInt2		num_fields;	/* number of fields in the result */	UInt2		num_key_fields;	/* number of key fields in the result */	SQLULEN		cache_size;	UInt4		rowset_size_include_ommitted; /* PG restriction */	SQLLEN		recent_processed_row_count;	QueryResultCode	rstatus;	/* result status */	char	sqlstate[8];	char	*message;	char *cursor_name;	/* The name of the cursor for select					 * statements */	char	*command;	char	*notice;	TupleField *backend_tuples;	/* data from the backend (the tuple cache) */	TupleField *tupleField;		/* current backend tuple being retrieved */	char	pstatus;		/* processing status */	char	aborted;		/* was aborted ? */	char	flags;			/* this result contains keyset etc ? */	char	move_direction;		/* must move before fetching this						result set */	SQLULEN		count_keyset_allocated; /* m(re)alloced count */	SQLULEN		num_cached_keys;	/* count of keys kept in backend_keys member */	KeySet		*keyset;	SQLLEN		key_base;	/* relative position of rowset start in the current keyset cache */	UInt2		reload_count;	UInt2		rb_alloc;	/* count of allocated rollback info */		UInt2		rb_count;	/* count of rollback info */		Rollback	*rollback;		UInt4		ad_alloc;	/* count of allocated added info */	UInt4		ad_count;	/* count of newly added rows */	KeySet		*added_keyset;	/* added keyset info */	TupleField	*added_tuples;	/* added data by myself */	UInt2		dl_alloc;	/* count of allocated deleted info */		UInt2		dl_count;	/* count of deleted info */		SQLULEN		*deleted;	/* deleted index info */	KeySet		*deleted_keyset;	/* deleted keyset info */	UInt2		up_alloc;	/* count of allocated updated info */		UInt2		up_count;	/* count of updated info */		SQLULEN		*updated;	/* updated index info */	KeySet		*updated_keyset;	/* uddated keyset info */	TupleField	*updated_tuples;	/* uddated data by myself */};enum {	 FQR_HASKEYSET	= 1L	,FQR_WITHHOLD	= (1L << 1)	,FQR_HOLDPERMANENT = (1L << 2) /* the cursor is alive across transactions */ 	,FQR_SYNCHRONIZEKEYS = (1L<<3) /* synchronize the keyset range with that of cthe tuples cache */}; #define	QR_haskeyset(self)		(0 != (self->flags & FQR_HASKEYSET))#define	QR_is_withhold(self)		(0 != (self->flags & FQR_WITHHOLD))#define	QR_is_permanent(self)		(0 != (self->flags & FQR_HOLDPERMANENT))#define	QR_synchronize_keys(self)	(0 != (self->flags & FQR_SYNCHRONIZEKEYS))#define QR_get_fields(self)		(self->fields)/*	These functions are for retrieving data from the qresult */#define QR_get_value_backend(self, fieldno)	(self->tupleField[fieldno].value)#define QR_get_value_backend_row(self, tupleno, fieldno) ((self->backend_tuples + (tupleno * self->num_fields))[fieldno].value)#define QR_get_value_backend_text(self, tupleno, fieldno) QR_get_value_backend_row(self, tupleno, fieldno)#define QR_get_value_backend_int(self, tupleno, fieldno, isNull) atoi(QR_get_value_backend_row(self, tupleno, fieldno))/*	These functions are used by both manual and backend results */#define QR_NumResultCols(self)		(CI_get_num_fields(self->fields))#define QR_NumPublicResultCols(self)	(QR_haskeyset(self) ? (CI_get_num_fields(self->fields) - self->num_key_fields) : CI_get_num_fields(self->fields))#define QR_get_fieldname(self, fieldno_)	(CI_get_fieldname(self->fields, fieldno_))#define QR_get_fieldsize(self, fieldno_)	(CI_get_fieldsize(self->fields, fieldno_))#define QR_get_display_size(self, fieldno_) (CI_get_display_size(self->fields, fieldno_))#define QR_get_atttypmod(self, fieldno_)	(CI_get_atttypmod(self->fields, fieldno_))#define QR_get_field_type(self, fieldno_)	(CI_get_oid(self->fields, fieldno_))#define QR_get_relid(self, fieldno_)	(CI_get_relid(self->fields, fieldno_))#define QR_get_attid(self, fieldno_)	(CI_get_attid(self->fields, fieldno_))/*	These functions are used only for manual result sets */#define QR_get_num_total_tuples(self)		(QR_once_reached_eof(self) ? (self->num_total_read + self->ad_count) : self->num_total_read)#define QR_get_num_total_read(self)		(self->num_total_read)#define QR_get_num_cached_tuples(self)		(self->num_cached_rows)#define QR_set_field_info(self, field_num, name, adtid, adtsize, relid, attid)  (CI_set_field_info(self->fields, field_num, name, adtid, adtsize, -1, relid, attid))#define QR_set_field_info_v(self, field_num, name, adtid, adtsize)  (CI_set_field_info(self->fields, field_num, name, adtid, adtsize, -1, 0, 0))/* status macros */#define QR_command_successful(self)	(self && !(self->rstatus == PORES_BAD_RESPONSE || self->rstatus == PORES_NONFATAL_ERROR || self->rstatus == PORES_FATAL_ERROR))#define QR_command_maybe_successful(self) (self && !(self->rstatus == PORES_BAD_RESPONSE || self->rstatus == PORES_FATAL_ERROR))#define QR_command_nonfatal(self)	( self->rstatus == PORES_NONFATAL_ERROR)#define QR_set_conn(self, conn_)			( self->conn = conn_ )#define QR_set_rstatus(self, condition)		( self->rstatus = condition )#define QR_set_sqlstatus(self, status)		strcpy(self->sqlstatus, status)#define QR_set_aborted(self, aborted_)		( self->aborted = aborted_)#define QR_set_haskeyset(self)		(self->flags |= FQR_HASKEYSET)#define QR_set_synchronize_keys(self)	(self->flags |= FQR_SYNCHRONIZEKEYS)#define QR_set_no_cursor(self)		(self->flags &= ~(FQR_WITHHOLD | FQR_HOLDPERMANENT))#define QR_set_withhold(self)		(self->flags |= FQR_WITHHOLD)#define QR_set_permanent(self)		(self->flags |= FQR_HOLDPERMANENT)#define	QR_set_reached_eof(self)	(self->pstatus |= FQR_REACHED_EOF)#define	QR_set_fetching_tuples(self)	(self->pstatus |= FQR_FETCHING_TUPLES)#define	QR_set_no_fetching_tuples(self)	(self->pstatus &= ~FQR_FETCHING_TUPLES)#define QR_set_has_valid_base(self)	(self->pstatus |= FQR_HAS_VALID_BASE)#define QR_set_no_valid_base(self)	(self->pstatus &= ~FQR_HAS_VALID_BASE)#define	QR_inc_num_cache(self) \do { \	self->num_cached_rows++; \	if (QR_haskeyset(self)) \		self->num_cached_keys++; \} while (0)#define	QR_set_next_in_cache(self, number) \do { \	inolog("set the number to %d to read next\n", number); \	self->fetch_number = number; \} while (0)#define	QR_inc_next_in_cache(self) \do { \	inolog("increased the number %d", self->fetch_number); \	self->fetch_number++; \	inolog("to %d to next read\n", self->fetch_number); \} while (0)#define QR_get_message(self)				(self->message)#define QR_get_command(self)				(self->command)#define QR_get_notice(self)				(self->notice)#define QR_get_rstatus(self)				(self->rstatus)#define QR_get_aborted(self)				(self->aborted)#define QR_get_conn(self)				(self->conn)#define QR_get_cursor(self)				(self->cursor_name)#define QR_get_rowstart_in_cache(self)			(self->base)#define QR_once_reached_eof(self)	((self->pstatus & FQR_REACHED_EOF) != 0)#define QR_is_fetching_tuples(self)	((self->pstatus & FQR_FETCHING_TUPLES) != 0)#define	QR_has_valid_base(self)		(0 != (self->pstatus & FQR_HAS_VALID_BASE))#define QR_aborted(self)		(!self || self->aborted)#define QR_get_reqsize(self)		(self->rowset_size_include_ommitted)#define QR_stop_movement(self)		(self->move_direction = 0)#define QR_is_moving(self)		(0 != self->move_direction)#define QR_is_not_moving(self)		(0 == self->move_direction)#define QR_set_move_forward(self)	(self->move_direction = 1)#define QR_is_moving_forward(self)	(1 == self->move_direction)#define QR_set_move_backward(self)	(self->move_direction = -1)#define QR_is_moving_backward(self)	(-1 == self->move_direction)#define QR_set_move_from_the_last(self)	(self->move_direction = 2)#define QR_is_moving_from_the_last(self)	(2 == self->move_direction)#define QR_is_moving_not_backward(self)	(0 < self->move_direction)/*	Core Functions */QResultClass	*QR_Constructor(void);void		QR_Destructor(QResultClass *self);TupleField	*QR_AddNew(QResultClass *self);BOOL		QR_get_tupledata(QResultClass *self, BOOL binary);int			QR_next_tuple(QResultClass *self, StatementClass *);int			QR_close(QResultClass *self);void		QR_close_result(QResultClass *self, BOOL destroy);char		QR_fetch_tuples(QResultClass *self, ConnectionClass *conn, const char *cursor);void		QR_free_memory(QResultClass *self);void		QR_set_command(QResultClass *self, const char *msg);void		QR_set_message(QResultClass *self, const char *msg);void		QR_add_message(QResultClass *self, const char *msg);void		QR_set_notice(QResultClass *self, const char *msg);void		QR_add_notice(QResultClass *self, const char *msg);void		QR_set_num_fields(QResultClass *self, int new_num_fields); /* catalog functions' result only */void		QR_set_num_cached_rows(QResultClass *, SQLLEN);void		QR_set_rowstart_in_cache(QResultClass *, SQLLEN);void		QR_inc_rowstart_in_cache(QResultClass *self, SQLLEN base_inc);void		QR_set_cache_size(QResultClass *self, SQLLEN cache_size);void		QR_set_rowset_size(QResultClass *self, Int4 rowset_size);void		QR_set_position(QResultClass *self, SQLLEN pos);void		QR_set_cursor(QResultClass *self, const char *name);SQLLEN		getNthValid(const QResultClass *self, SQLLEN sta, UWORD orientation, SQLULEN nth, SQLLEN *nearest);#define QR_MALLOC_return_with_error(t, tp, s, a, m, r) \do { \ 	if (t = (tp *) malloc(s), NULL == t) \	{ \ 		QR_set_rstatus(a, PORES_FATAL_ERROR); \ 		QR_set_message(a, m); \ 		return r; \	} \} while (0)#define QR_REALLOC_return_with_error(t, tp, s, a, m, r) \do { \	tp *tmp; \	if (tmp = (tp *) realloc(t, s), NULL == tmp) \	{ \ 		QR_set_rstatus(a, PORES_FATAL_ERROR); \ 		QR_set_message(a, m); \		return r; \	} \	t = tmp; \} while (0)#ifdef	__cplusplus}#endif#endif /* __QRESULT_H__ */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
同产精品九九九| 国产婷婷精品av在线| 综合网在线视频| 成人性视频免费网站| 久久精品综合网| 国产日产精品一区| 亚洲午夜久久久久久久久电影院| 91香蕉视频mp4| 亚洲国产精品自拍| 欧美一区二区免费| 国产成人亚洲综合色影视| 中文子幕无线码一区tr| 色综合色综合色综合| 午夜在线成人av| 欧美精品一区二区三区在线| 成人丝袜视频网| 亚洲精品va在线观看| 日韩一区国产二区欧美三区| 国产成人自拍在线| 一区二区三区国产| 日韩欧美资源站| 成人国产一区二区三区精品| 一区二区三区高清在线| 日韩欧美国产三级电影视频| 成人高清视频在线观看| 亚洲va国产天堂va久久en| 精品久久久网站| 成人深夜福利app| 亚洲高清免费视频| 久久久无码精品亚洲日韩按摩| 91蝌蚪porny成人天涯| 肉色丝袜一区二区| 亚洲国产成人自拍| 91精品国产综合久久久久久久久久| 国产真实乱对白精彩久久| 依依成人精品视频| wwww国产精品欧美| 欧美色欧美亚洲另类二区| 国产一区二区久久| 亚洲电影一区二区三区| 久久精品视频在线免费观看| 欧美日韩一区二区三区免费看| 国产一区二区伦理片| 日韩国产一区二| 亚洲免费视频成人| 中文字幕av资源一区| 欧美一区日韩一区| 在线观看不卡一区| 国产91清纯白嫩初高中在线观看| 日本午夜一本久久久综合| 亚洲美女偷拍久久| 国产情人综合久久777777| 欧美丰满高潮xxxx喷水动漫| 波多野结衣中文一区| 美女脱光内衣内裤视频久久影院| 亚洲欧美一区二区三区国产精品| 久久综合九色综合欧美98| 欧美日韩国产123区| 99精品视频一区| 福利视频网站一区二区三区| 久久99精品久久久久久 | 在线视频中文字幕一区二区| 精品一区二区三区在线观看| 五月综合激情婷婷六月色窝| 中文字幕五月欧美| 国产午夜精品久久久久久久 | 91女厕偷拍女厕偷拍高清| 国产一区在线精品| 国产自产v一区二区三区c| 青青草97国产精品免费观看无弹窗版 | 欧美丰满高潮xxxx喷水动漫| 在线观看区一区二| 欧美在线观看禁18| 色综合久久天天综合网| 在线观看日韩电影| 色八戒一区二区三区| 不卡的av在线播放| 99re8在线精品视频免费播放| 福利电影一区二区| av网站免费线看精品| 91伊人久久大香线蕉| 色综合久久天天综合网| 在线观看亚洲专区| 欧美色倩网站大全免费| 欧美日韩国产美| 欧美精品一卡二卡| 欧美一区二区三区免费在线看 | 欧美日韩精品免费观看视频| 欧美午夜影院一区| 欧美性猛交xxxxxxxx| 欧美日韩一区国产| 91精品国产综合久久精品麻豆| 这里只有精品99re| 欧美成人一区二区三区片免费 | 91福利精品视频| 在线观看欧美精品| 8x8x8国产精品| 久久综合九色综合欧美亚洲| 亚洲国产成人一区二区三区| 亚洲欧美日韩久久| 天天av天天翘天天综合网| 免费在线看一区| 国产精品1区2区3区在线观看| 成人午夜在线播放| 欧美视频一区二| 欧美va亚洲va在线观看蝴蝶网| 欧美高清在线一区二区| 一区二区三区蜜桃| 麻豆精品在线视频| 粉嫩av一区二区三区在线播放| www.欧美亚洲| 欧美一区二区三区日韩| 国产喷白浆一区二区三区| 亚洲色图制服诱惑| 麻豆精品在线看| 99久久国产综合精品色伊| 91精品国模一区二区三区| 久久精品夜夜夜夜久久| 亚洲国产精品久久人人爱蜜臀 | 日韩情涩欧美日韩视频| 国产精品久久久久久久久免费樱桃| 亚洲成人av在线电影| 国产成人自拍在线| 7777精品伊人久久久大香线蕉 | 成人av第一页| 久久奇米777| 亚洲不卡在线观看| 成人性生交大合| 日韩午夜在线影院| 亚洲裸体xxx| 国产乱淫av一区二区三区| 欧美日韩国产综合视频在线观看| 亚洲国产精品激情在线观看| 视频一区中文字幕| 白白色 亚洲乱淫| 欧美va天堂va视频va在线| 亚洲精品ww久久久久久p站 | 一区二区国产视频| 国产传媒一区在线| 日韩欧美久久一区| 亚洲大片一区二区三区| av亚洲精华国产精华精| 日韩免费高清电影| 三级影片在线观看欧美日韩一区二区| 不卡电影一区二区三区| 国产亚洲精品久| 久久国产精品99久久久久久老狼| 色系网站成人免费| 国产精品欧美久久久久无广告 | 亚洲123区在线观看| 国产成人综合在线| 精品国内片67194| 日韩激情中文字幕| 欧美性欧美巨大黑白大战| 中文字幕在线不卡国产视频| 国产一区在线视频| xf在线a精品一区二区视频网站| 日韩av成人高清| 91麻豆精品国产| 日韩精品一二三区| 欧美日韩国产首页在线观看| 一区二区免费在线播放| 91尤物视频在线观看| 亚洲色欲色欲www在线观看| 成人午夜免费电影| 国产精品久久久久影院| 成人动漫一区二区在线| 国产精品国产三级国产普通话三级 | 欧美电影免费观看完整版| 日韩成人午夜精品| 欧美一区二视频| 麻豆精品久久久| 久久久亚洲精品石原莉奈| 国产成人免费视频网站 | 国产成人午夜99999| 久久夜色精品一区| 国产mv日韩mv欧美| 欧美国产精品一区| 97se狠狠狠综合亚洲狠狠| 亚洲人成网站色在线观看| 99精品视频在线播放观看| 亚洲精品国产无套在线观| 色综合久久中文综合久久牛| 一区二区三区欧美在线观看| 在线精品视频一区二区| 亚洲电影中文字幕在线观看| 欧美一区二区三区在线视频| 九九热在线视频观看这里只有精品| 欧美tk—视频vk| 成人小视频在线观看| 亚洲另类一区二区| 欧美一区二区三区性视频| 国产一区二区三区在线观看精品| 中文字幕免费一区| 在线亚洲+欧美+日本专区| 青青草97国产精品免费观看| 久久久99精品免费观看不卡| 成人av在线播放网址| 午夜精品福利一区二区三区av| 欧美变态tickling挠脚心|