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

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

?? ct.c

?? 在Linux/Unix下面訪問WINDOWS SQLSERVER 的ODBC驅動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
	/* We'll call a special function for fetches from a cursor            */	/* the processing is too incompatible to patch into a single function */	if (cmd->command_type == CS_CUR_CMD) {		return _ct_fetch_cursor(cmd, type, offset, option, rows_read);	}	if (rows_read)		*rows_read = 0;	/* taking a copy of the cmd->bind_count value. */	temp_count = cmd->bind_count;	if ( cmd->bind_count == CS_UNUSED )		cmd->bind_count = 1;	/* compute rows and parameter results have been pre-fetched by ct_results() */	if (cmd->row_prefetched) {		cmd->row_prefetched = 0;		cmd->get_data_item = 0;		cmd->get_data_bytes_returned = 0;		if (_ct_bind_data(cmd->con->ctx, tds->current_results, tds->current_results, 0))			return CS_ROW_FAIL;		if (rows_read)			*rows_read = 1;		return CS_SUCCEED;	}	if (cmd->results_state == _CS_RES_CMD_DONE)		return CS_END_DATA;	if (cmd->curr_result_type == CS_COMPUTE_RESULT)		return CS_END_DATA;	if (cmd->curr_result_type == CS_CMD_FAIL)		return CS_CMD_FAIL;	marker = tds_peek(tds);	if ((cmd->curr_result_type == CS_ROW_RESULT && marker != TDS_ROW_TOKEN) ||		(cmd->curr_result_type == CS_STATUS_RESULT && marker != TDS_RETURNSTATUS_TOKEN) )		return CS_END_DATA;	/* Array Binding Code changes start here */	for (temp_count = 0; temp_count < cmd->bind_count; temp_count++) {		ret = tds_process_tokens(tds, &ret_type, NULL, TDS_STOPAT_ROWFMT|TDS_STOPAT_DONE|TDS_RETURN_ROW|TDS_RETURN_COMPUTE);		tdsdump_log(TDS_DBG_FUNC, "inside ct_fetch()process_row_tokens returned %d\n", ret);		switch (ret) {			case TDS_SUCCEED:				if (ret_type == TDS_ROW_RESULT || ret_type == TDS_COMPUTE_RESULT) {					cmd->get_data_item = 0;					cmd->get_data_bytes_returned = 0;					if (_ct_bind_data(cmd->con->ctx, tds->current_results, tds->current_results, temp_count))						return CS_ROW_FAIL;					if (rows_read)						*rows_read = *rows_read + 1;					break;				}			case TDS_NO_MORE_RESULTS:				return CS_END_DATA;				break;			case TDS_CANCELLED:				cmd->cancel_state = _CS_CANCEL_NOCANCEL;				return CS_CANCELED;				break;			default:				return CS_FAIL;				break;		}		/* have we reached the end of the rows ? */		marker = tds_peek(tds);		if (cmd->curr_result_type == CS_ROW_RESULT && marker != TDS_ROW_TOKEN)			break;	}	/* Array Binding Code changes end here */	return CS_SUCCEED;}static CS_RETCODE_ct_fetch_cursor(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT option, CS_INT * rows_read){	TDSSOCKET * tds;	TDSCURSOR *cursor;	TDS_INT restype;	TDS_INT ret;	TDS_INT temp_count;	TDS_INT done_flags;	TDS_INT rows_this_fetch = 0;	tdsdump_log(TDS_DBG_FUNC, "_ct_fetch_cursor()\n");	if (!cmd->con || !cmd->con->tds_socket)		return CS_FAIL;	tds = cmd->con->tds_socket;	if (rows_read)		*rows_read = 0;	/* taking a copy of the cmd->bind_count value. */	temp_count = cmd->bind_count;	if ( cmd->bind_count == CS_UNUSED )		cmd->bind_count = 1;	cursor = cmd->cursor;	if (!cursor) {		tdsdump_log(TDS_DBG_FUNC, "ct_fetch_cursor() : cursor not present\n");		return CS_FAIL;	}	/* currently we are placing this restriction on cursor fetches.  */	/* the alternatives are too awful to contemplate at the moment   */	/* i.e. buffering all the rows from the fetch internally...      */	if (cmd->bind_count < cursor->cursor_rows) {		tdsdump_log(TDS_DBG_WARN, "_ct_fetch_cursor(): bind count must equal cursor rows \n");		return CS_FAIL;	}	if (tds_cursor_fetch(tds, cursor, TDS_CURSOR_FETCH_NEXT, 0) == CS_SUCCEED) {		cursor->status.fetch = _CS_CURS_TYPE_SENT;	}	else {		tdsdump_log(TDS_DBG_WARN, "ct_fetch(): cursor fetch failed\n");		return CS_FAIL;	}	while ((tds_process_tokens(tds, &restype, &done_flags, TDS_TOKEN_RESULTS)) == TDS_SUCCEED) {		switch (restype) {			case CS_ROWFMT_RESULT:				break;			case CS_ROW_RESULT:				for (temp_count = 0; temp_count < cmd->bind_count; temp_count++) {					ret = tds_process_tokens(tds, &restype, NULL, TDS_STOPAT_ROWFMT|TDS_STOPAT_DONE|TDS_RETURN_ROW|TDS_RETURN_COMPUTE);					tdsdump_log(TDS_DBG_FUNC, "_ct_fetch_cursor() tds_process_tokens returned %d\n", ret);					if (ret == TDS_SUCCEED && (restype == TDS_ROW_RESULT || restype == TDS_COMPUTE_RESULT)) {						cmd->get_data_item = 0;						cmd->get_data_bytes_returned = 0;						if (restype == TDS_ROW_RESULT) {							if (_ct_bind_data(cmd->con->ctx, tds->current_results, tds->current_results, temp_count))								return CS_ROW_FAIL;							if (rows_read)								*rows_read = *rows_read + 1;							rows_this_fetch++;						}					} else {						if (ret != TDS_FAIL) {							break;						} else {							return CS_FAIL;						}					}				}				break;			case TDS_DONE_RESULT:				break;		}	}	if (rows_this_fetch)		return CS_SUCCEED;	else {		cmd->results_state = _CS_RES_CMD_SUCCEED;		return CS_END_DATA;	}}int_ct_bind_data(CS_CONTEXT *ctx, TDSRESULTINFO * resinfo, TDSRESULTINFO *bindinfo, CS_INT offset){	int i;	TDSCOLUMN *curcol;	TDSCOLUMN *bindcol;	unsigned char *src;	unsigned char *dest, *temp_add;	int result = 0;	TDS_INT srctype, srclen, desttype, len;	CS_DATAFMT srcfmt, destfmt;	TDS_INT *datalen = NULL;	TDS_SMALLINT *nullind = NULL;	tdsdump_log(TDS_DBG_FUNC, "_ct_bind_data()\n");	for (i = 0; i < resinfo->num_cols; i++) {		curcol = resinfo->columns[i];		bindcol = bindinfo->columns[i];		tdsdump_log(TDS_DBG_FUNC, "_ct_bind_data(): column_type: %d column_len: %d\n",			curcol->column_type,			curcol->column_cur_size		);		if (curcol->column_hidden)			continue;		srctype = curcol->column_type;		desttype = _ct_get_server_type(bindcol->column_bindtype);		/* retrieve the initial bound column_varaddress */		/* and increment it if offset specified         */		temp_add = (unsigned char *) bindcol->column_varaddr;		dest = temp_add + (offset * bindcol->column_bindlen);		if (bindcol->column_nullbind) {			nullind = bindcol->column_nullbind;			nullind += offset;		}		if (bindcol->column_lenbind) {			datalen = bindcol->column_lenbind;			datalen += offset;		}		if (dest) {			if (curcol->column_cur_size < 0) {				if (nullind)					*nullind = -1;				if (datalen)					*datalen = 0;			} else {				srctype = _ct_get_client_type(curcol->column_type, curcol->column_usertype, curcol->column_size);				src = curcol->column_data;				if (is_blob_type(curcol->column_type))					src = (unsigned char *) ((TDSBLOB *) src)->textvalue;				srclen = curcol->column_cur_size;				srcfmt.datatype = srctype;				srcfmt.maxlength = srclen;				destfmt.datatype = bindcol->column_bindtype;				destfmt.maxlength = bindcol->column_bindlen;				destfmt.format = bindcol->column_bindfmt;				/* if convert return FAIL mark error but process other columns */				if ((result= cs_convert(ctx, &srcfmt, (CS_VOID *) src, &destfmt, (CS_VOID *) dest, &len) != CS_SUCCEED)) {					tdsdump_log(TDS_DBG_FUNC, "cs_convert-result = %d\n", result);					result = 1;					len = 0;					tdsdump_log(TDS_DBG_INFO1, "\n  convert failed for %d \n", srcfmt.datatype);				}				if (nullind)					*nullind = 0;				if (datalen) {					*datalen = len;				}			}		} else {			if (datalen)				*datalen = 0;		}	}	return result;}CS_RETCODEct_cmd_drop(CS_COMMAND * cmd){	CS_RETCODE ret;	ret = _ct_cmd_drop(cmd, 1);	return ret;}static CS_RETCODE_ct_cmd_drop(CS_COMMAND * cmd, CS_INT free_conn_ref){	CS_COMMAND_LIST *victim = NULL;	CS_COMMAND_LIST *prev = NULL;	CS_COMMAND_LIST *next = NULL;	CS_CONNECTION *con;	tdsdump_log(TDS_DBG_FUNC, "ct_cmd_drop()\n");	if (cmd) {		free(cmd->query);		if (cmd->input_params)			param_clear(cmd->input_params);		free(cmd->userdata);		if (cmd->rpc) {			if (cmd->rpc->param_list)				param_clear(cmd->rpc->param_list);			free(cmd->rpc->name);			free(cmd->rpc);		}		free(cmd->iodesc);		/* now remove this command from the list of commands in the connection */		if (free_conn_ref && cmd->con) {			con = cmd->con;			victim = con->cmds;			for (;;) {				if (victim->cmd == cmd)					break;				prev = victim;				victim = victim->next;				if (victim == NULL) {					tdsdump_log(TDS_DBG_FUNC, "ct_cmd_drop() : cannot find command entry in list \n");					return CS_FAIL;				}			}			tdsdump_log(TDS_DBG_FUNC, "ct_cmd_drop() : command entry found in list\n");			next = victim->next;			free(victim);			tdsdump_log(TDS_DBG_FUNC, "ct_cmd_drop() : relinking list\n");			if (prev)				prev->next = next;			else				con->cmds = next;			tdsdump_log(TDS_DBG_FUNC, "ct_cmd_drop() : relinked list\n");		}		free(cmd);	}	return CS_SUCCEED;}CS_RETCODEct_close(CS_CONNECTION * con, CS_INT option){	tdsdump_log(TDS_DBG_FUNC, "ct_close()\n");	tds_free_socket(con->tds_socket);	con->tds_socket = NULL;	return CS_SUCCEED;}CS_RETCODEct_con_drop(CS_CONNECTION * con){	CS_COMMAND_LIST *currptr;	CS_COMMAND_LIST *freeptr;	tdsdump_log(TDS_DBG_FUNC, "ct_con_drop()\n");	if (con) {		free(con->userdata);		if (con->tds_login)			tds_free_login(con->tds_login);		if (con->cmds) {			currptr = con->cmds;			while (currptr != NULL) {				freeptr = currptr;				if (currptr->cmd)					currptr->cmd->con = NULL;				currptr = currptr->next;				free(freeptr);			}		}		if (con->locale)			_cs_locale_free(con->locale);		free(con);	}	return CS_SUCCEED;}int_ct_get_client_type(int datatype, int usertype, int size){	tdsdump_log(TDS_DBG_FUNC, "_ct_get_client_type(type %d, user %d, size %d)\n", datatype, usertype, size);	switch (datatype) {	case SYBBIT:	case SYBBITN:		return CS_BIT_TYPE;		break;	case SYBCHAR:	case SYBVARCHAR:		return CS_CHAR_TYPE;		break;	case SYBINT8:		return CS_LONG_TYPE;		break;	case SYBINT4:		return CS_INT_TYPE;		break;	case SYBINT2:		return CS_SMALLINT_TYPE;		break;	case SYBINT1:		return CS_TINYINT_TYPE;		break;	case SYBINTN:		switch (size) {		case 8:			return CS_LONG_TYPE;		case 4:			return CS_INT_TYPE;		case 2:			return CS_SMALLINT_TYPE;		case 1:			return CS_TINYINT_TYPE;		default:			fprintf(stderr, "Unknown size %d for SYBINTN\n", size);		}		break;	case SYBREAL:		return CS_REAL_TYPE;		break;	case SYBFLT8:		return CS_FLOAT_TYPE;		break;	case SYBFLTN:		if (size == 4) {			return CS_REAL_TYPE;		} else if (size == 8) {			return CS_FLOAT_TYPE;		} else {			fprintf(stderr, "Error! unknown float size of %d\n", size);		}	case SYBMONEY:		return CS_MONEY_TYPE;		break;	case SYBMONEY4:		return CS_MONEY4_TYPE;		break;	case SYBMONEYN:		if (size == 4) {			return CS_MONEY4_TYPE;		} else if (size == 8) {			return CS_MONEY_TYPE;		} else {			fprintf(stderr, "Error! unknown money size of %d\n", size);		}	case SYBDATETIME:		return CS_DATETIME_TYPE;		break;	case SYBDATETIME4:		return CS_DATETIME4_TYPE;		break;	case SYBDATETIMN:		if (size == 4) {			return CS_DATETIME4_TYPE;		} else if (size == 8) {			return CS_DATETIME_TYPE;		} else {			fprintf(stderr, "Error! unknown date size of %d\n", size);		}		break;	case SYBNUMERIC:		return CS_NUMERIC_TYPE;		break;	case SYBDECIMAL:		return CS_DECIMAL_TYPE;		break;	case SYBBINARY:		return CS_BINARY_TYPE;		break;	case SYBIMAGE:		return CS_IMAGE_TYPE;		break;	case SYBVARBINARY:		return CS_VARBINARY_TYPE;		break;	case SYBTEXT:		return CS_TEXT_TYPE;		break;	case SYBUNIQUE:		return CS_UNIQUE_TYPE;		break;	case SYBLONGBINARY:		if (usertype == USER_UNICHAR_TYPE || usertype == USER_UNIVARCHAR_TYPE)			return CS_UNICHAR_TYPE;		return CS_CHAR_TYPE;		break;	}	return CS_FAIL;}int_ct_get_server_type(int datatype){	tdsdump_log(TDS_DBG_FUNC, "_ct_get_server_type(%d)\n", datatype);	switch (datatype) {	case CS_IMAGE_TYPE:		return SYBIMAGE;		break;	case CS_BINARY_TYPE:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久福利软件| 精品美女在线播放| 国产精品资源在线观看| 亚洲综合色噜噜狠狠| 久久久久久久久99精品| 欧美性猛交xxxxxxxx| eeuss影院一区二区三区 | 国产日韩精品一区二区三区在线| 欧美性猛交xxxxxx富婆| 成人高清视频免费观看| 精品无人码麻豆乱码1区2区| 亚洲高清免费观看| 亚洲精品五月天| 中文字幕av一区二区三区免费看| 日韩亚洲国产中文字幕欧美| 欧美日韩综合不卡| 色菇凉天天综合网| 99视频在线观看一区三区| 国产精品一卡二卡| 久久99精品国产麻豆婷婷| 日韩av午夜在线观看| 亚洲国产精品久久人人爱 | 亚洲女性喷水在线观看一区| 久久久精品综合| 久久女同互慰一区二区三区| 欧美tickle裸体挠脚心vk| 欧美高清视频一二三区 | 日韩一区精品视频| 一区二区三区四区高清精品免费观看 | 三级影片在线观看欧美日韩一区二区| 亚洲色图丝袜美腿| 日韩一区在线免费观看| 国产精品国产自产拍高清av | 国产超碰在线一区| 国产永久精品大片wwwapp| 免费人成在线不卡| 美女视频一区在线观看| 日本午夜一本久久久综合| 日本亚洲欧美天堂免费| 伦理电影国产精品| 久久国产精品99精品国产 | 国产一区在线精品| 国产成人免费视频网站| 国产电影精品久久禁18| 国产成人在线色| 成人网在线播放| 97久久超碰精品国产| 色欲综合视频天天天| 欧美日韩久久一区| 欧美一区三区二区| 2023国产一二三区日本精品2022| 国产亚洲欧美在线| 中文字幕亚洲一区二区av在线| 亚洲免费观看高清| 亚洲第一在线综合网站| 蜜臀av一级做a爰片久久| 国产在线国偷精品免费看| 成人国产精品视频| 欧美探花视频资源| 日韩欧美黄色影院| 日本一区二区三区在线观看| 一区二区三区在线播放| 蜜桃视频在线一区| 高清国产一区二区| 欧洲av在线精品| 精品日产卡一卡二卡麻豆| 国产精品电影一区二区| 五月天亚洲精品| 国产精品综合一区二区| 91麻豆免费观看| 欧美一区二区视频网站| 国产欧美视频一区二区三区| 亚洲免费在线观看视频| 免费观看成人鲁鲁鲁鲁鲁视频| 国产成人av电影在线播放| 色8久久精品久久久久久蜜| 欧美电影免费观看高清完整版在 | 欧美日韩一区 二区 三区 久久精品 | 97久久超碰国产精品| 正在播放亚洲一区| 国产精品久久久久久久久免费桃花 | 国产最新精品精品你懂的| 99精品国产91久久久久久| 777午夜精品免费视频| 国产亚洲午夜高清国产拍精品| 亚洲丝袜美腿综合| 韩国理伦片一区二区三区在线播放| 99在线精品观看| 精品国产一区二区亚洲人成毛片| 综合在线观看色| 精品一区二区三区日韩| 亚洲国产日韩一区二区| 国产一区999| 欧美一区二区免费视频| 亚洲成人福利片| 91性感美女视频| 欧美男男青年gay1069videost| 久久综合丝袜日本网| 麻豆国产精品官网| 日韩午夜小视频| 日本sm残虐另类| 日韩欧美一区二区在线视频| 日本在线播放一区二区三区| 日韩欧美一区二区免费| 久久精工是国产品牌吗| 精品国产一区二区三区av性色| 麻豆国产欧美一区二区三区| 精品久久久网站| 国产成人丝袜美腿| 国产精品青草综合久久久久99| a级高清视频欧美日韩| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 久久精品国产精品亚洲综合| 欧美成人a∨高清免费观看| 久久国产尿小便嘘嘘| 久久九九国产精品| 99视频精品全部免费在线| 一个色妞综合视频在线观看| 欧美日韩国产美| 免费日韩伦理电影| 国产亚洲一区字幕| 91免费视频网址| 视频一区二区中文字幕| 亚洲精品在线免费观看视频| 国产大陆亚洲精品国产| 亚洲色图.com| 在线播放91灌醉迷j高跟美女 | 免费在线看成人av| 久久你懂得1024| 99久久精品情趣| 亚洲成人免费电影| 精品国产乱码久久久久久图片| 丁香一区二区三区| 亚洲精品国产一区二区三区四区在线 | 欧美视频一区二区三区在线观看| 日韩 欧美一区二区三区| 欧美精品一区二区久久久| 成人黄色av电影| 天堂av在线一区| 国产日韩影视精品| 欧美日韩一区二区三区在线| 国产一区在线观看麻豆| 综合av第一页| 日韩视频一区二区在线观看| 不卡高清视频专区| 日韩国产精品久久久久久亚洲| 国产欧美一区二区精品性色| 欧美性生活影院| 国产麻豆精品视频| 亚洲动漫第一页| 国产日产精品一区| 欧美区一区二区三区| 国产一区二区三区日韩| 一区二区高清视频在线观看| 日韩精品资源二区在线| 91麻豆国产在线观看| 麻豆国产精品官网| 亚洲最色的网站| 久久影音资源网| 欧美日韩免费不卡视频一区二区三区| 国产成人亚洲综合a∨猫咪| 亚洲高清免费观看高清完整版在线观看 | 精品嫩草影院久久| 欧美性色综合网| 成人av免费在线| 韩日精品视频一区| 亚洲国产精品精华液网站| 国产精品免费视频观看| 欧美一区午夜精品| 色狠狠色狠狠综合| 波多野结衣中文字幕一区 | 日韩欧美在线影院| 91搞黄在线观看| k8久久久一区二区三区| 国产在线播精品第三| 免费看日韩精品| 亚洲综合在线免费观看| 国产精品不卡视频| 国产午夜精品一区二区三区嫩草| 日韩亚洲欧美中文三级| 欧美乱妇23p| 91福利精品第一导航| 99久久婷婷国产综合精品电影| 国产盗摄女厕一区二区三区| 久久国产尿小便嘘嘘尿| 免费一区二区视频| 水蜜桃久久夜色精品一区的特点| 综合av第一页| ...av二区三区久久精品| 国产日韩欧美一区二区三区乱码 | 欧美日本一区二区三区| 色8久久精品久久久久久蜜| 波多野结衣欧美| 成人国产在线观看| 成人黄色小视频在线观看| 国产精品亚洲成人| 国产精品系列在线播放| 国产精品一区二区91| 精品影院一区二区久久久| 久久黄色级2电影|