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

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

?? ct.c

?? 在Linux/Unix下面訪問WINDOWS SQLSERVER 的ODBC驅(qū)動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
				cursor->status.declare = _CS_CURS_TYPE_SENT; /* Cursor is declared */				if (something_to_send == 0) {					cmd->results_state = _CS_RES_END_RESULTS;				}			}			else {				tdsdump_log(TDS_DBG_WARN, "ct_send(): cursor declare failed \n");				return CS_FAIL;			}		}		if (cursor->status.cursor_row == _CS_CURS_TYPE_REQUESTED &&			cursor->status.declare == _CS_CURS_TYPE_SENT) { 			ret = tds_cursor_setrows(tds, cursor, &something_to_send);			if (ret == CS_SUCCEED){				cursor->status.cursor_row = _CS_CURS_TYPE_SENT; /* Cursor rows set */				if (something_to_send == 0) {					cmd->results_state = _CS_RES_END_RESULTS;				}			}			else {				tdsdump_log(TDS_DBG_WARN, "ct_send(): cursor set rows failed\n");				return CS_FAIL;			}		}		if (cursor->status.open == _CS_CURS_TYPE_REQUESTED &&			cursor->status.declare == _CS_CURS_TYPE_SENT) {			ret = tds_cursor_open(tds, cursor, NULL, &something_to_send); 			if (ret == CS_SUCCEED){				cursor->status.open = _CS_CURS_TYPE_SENT;				cmd->results_state = _CS_RES_INIT;			}			else {				tdsdump_log(TDS_DBG_WARN, "ct_send(): cursor open failed\n");				return CS_FAIL;			}		}		if (something_to_send) {			tdsdump_log(TDS_DBG_WARN, "ct_send(): sending cursor commands\n");			tds_flush_packet(tds);			tds_set_state(tds, TDS_PENDING);			something_to_send = 0;			ct_set_command_state(cmd, _CS_COMMAND_SENT);			return CS_SUCCEED;		}		if (cursor->status.close == _CS_CURS_TYPE_REQUESTED){			if (cursor->status.dealloc == TDS_CURSOR_STATE_REQUESTED) {				/* FIXME what happen if tds_cursor_dealloc return TDS_FAIL ?? */				ret = tds_cursor_close(tds, cursor);				tds_release_cursor(tds, cursor);				cmd->cursor = cursor = NULL;			} else {				ret = tds_cursor_close(tds, cursor);				cursor->status.close = _CS_CURS_TYPE_SENT;			}		}		if (cursor && cursor->status.dealloc == _CS_CURS_TYPE_REQUESTED) {			/* FIXME what happen if tds_cursor_dealloc return TDS_FAIL ?? */			ret = tds_cursor_dealloc(tds, cursor);			cmd->cursor = NULL;			tds_free_all_results(tds);		}		ct_set_command_state(cmd, _CS_COMMAND_SENT);		return CS_SUCCEED;	}	if (cmd->command_type == CS_SEND_DATA_CMD) {		tds_flush_packet(tds);		tds_set_state(tds, TDS_PENDING);		ct_set_command_state(cmd, _CS_COMMAND_SENT);	}	return CS_SUCCEED;}CS_RETCODEct_results(CS_COMMAND * cmd, CS_INT * result_type){	TDSSOCKET *tds;	CS_CONTEXT *context;	int tdsret;	CS_INT res_type;	CS_INT done_flags;	tdsdump_log(TDS_DBG_FUNC, "ct_results()\n");	if (cmd->cancel_state == _CS_CANCEL_PENDING) {		_ct_cancel_cleanup(cmd);		return CS_CANCELED;	}	if (!cmd->con || !cmd->con->tds_socket)		return CS_FAIL;	cmd->bind_count = CS_UNUSED;	context = cmd->con->ctx;	tds = cmd->con->tds_socket;	cmd->row_prefetched = 0;	/*	 * depending on the current results state, we may	 * not need to call tds_process_tokens...	 */	switch (cmd->results_state) {	case _CS_RES_CMD_SUCCEED:		*result_type = CS_CMD_SUCCEED;		cmd->results_state = _CS_RES_CMD_DONE;		return CS_SUCCEED;	case _CS_RES_CMD_DONE:		*result_type = CS_CMD_DONE;		cmd->results_state = _CS_RES_INIT;		return CS_SUCCEED;	case _CS_RES_END_RESULTS:		*result_type = CS_CMD_DONE;		cmd->results_state = _CS_RES_INIT;		return CS_END_RESULTS;	case _CS_RES_DESCRIBE_RESULT:		*result_type = CS_DESCRIBE_RESULT;		cmd->results_state = _CS_RES_CMD_DONE;		return CS_SUCCEED;	case _CS_RES_NONE:				/* first time in after ct_send */		cmd->results_state = _CS_RES_INIT;		break;	default:		break;	}	/*	 * see what "result" tokens we have. a "result" in ct-lib terms also	 * includes row data. Some result types always get reported back  to	 * the calling program, others are only reported back if the relevant	 * config flag is set.	 */	for (;;) {		tdsret = tds_process_tokens(tds, &res_type, &done_flags, TDS_TOKEN_RESULTS);		tdsdump_log(TDS_DBG_FUNC, "ct_results() process_result_tokens returned %d (type %d) \n",			    tdsret, res_type);		switch (tdsret) {		case TDS_SUCCEED:			cmd->curr_result_type = res_type;			switch (res_type) {			case CS_COMPUTEFMT_RESULT:			case CS_ROWFMT_RESULT:				/*				 * set results state to indicate that we				 * have a result set (empty for the moment)				 * If the CS_EXPOSE_FMTS  property has been				 * set in ct_config(), we need to return an				 * appropraite format result, otherwise just				 * carry on and get the next token.....				 */				cmd->results_state = _CS_RES_RESULTSET_EMPTY;				if (context->config.cs_expose_formats) {					*result_type = res_type;					return CS_SUCCEED;				}				break;			case CS_ROW_RESULT:				/*				 * we've hit a data row. pass back that fact				 * to the calling program. set results state				 * to show that the result set has rows...				 */				cmd->results_state = _CS_RES_RESULTSET_ROWS;				if (cmd->command_type == CS_CUR_CMD) {					*result_type = CS_CURSOR_RESULT;				} else {					*result_type = CS_ROW_RESULT;				}				return CS_SUCCEED;				break;			case CS_COMPUTE_RESULT:				/*				 * we've hit a compute data row. We have to get hold of this				 * data now, as it's necessary  to tie this data back to its				 * result format...the user may call ct_res_info() & friends				 * after getting back a compute "result".				 *				 * but first, if we've hit this compute row without having				 * hit a data row first, we need to return a  CS_ROW_RESULT				 * before letting them have the compute row...				 */				if (cmd->results_state == _CS_RES_RESULTSET_EMPTY) {					*result_type = CS_ROW_RESULT;					tds->current_results = tds->res_info;					cmd->results_state = _CS_RES_RESULTSET_ROWS;					return CS_SUCCEED;				}				tdsret = tds_process_tokens(tds, &res_type, NULL, TDS_STOPAT_ROWFMT|TDS_RETURN_DONE|TDS_RETURN_ROW|TDS_RETURN_COMPUTE);				/* set results state to show that the result set has rows... */				cmd->results_state = _CS_RES_RESULTSET_ROWS;				*result_type = res_type;				if (tdsret == TDS_SUCCEED && (res_type == TDS_ROW_RESULT || res_type == TDS_COMPUTE_RESULT)) {					if (res_type == TDS_COMPUTE_RESULT) {						cmd->row_prefetched = 1;						return CS_SUCCEED;					} else {						/* this couldn't really happen, but... */						return CS_FAIL;					}				} else					return CS_FAIL;				break;			case TDS_DONE_RESULT:				/*				 * A done token signifies the end of a logical				 * command. There are three possibilities...				 * 1. Simple command with no result set, i.e.				 *    update, delete, insert				 * 2. Command with result set but no rows				 * 3. Command with result set and rows				 * in these cases we need to:				 * 1. return CS_CMD_FAIL/SUCCED depending on				 *    the status returned in done_flags				 * 2. "manufacture" a CS_ROW_RESULT return,				 *    and set the results state to DONE				 * 3. return with CS_CMD_DONE and reset the				 *    results_state				 */				tdsdump_log(TDS_DBG_FUNC, "ct_results() results state = %d\n",cmd->results_state);				tdsdump_log(TDS_DBG_FUNC, "ct_results() command type  = %d\n",cmd->command_type);				tdsdump_log(TDS_DBG_FUNC, "ct_results() dynamic cmd   = %d\n",cmd->dynamic_cmd);				if ((cmd->command_type == CS_DYNAMIC_CMD) &&					(cmd->dynamic_cmd == CS_PREPARE || cmd->dynamic_cmd == CS_DEALLOC)) {					*result_type = CS_CMD_SUCCEED;					cmd->results_state = _CS_RES_CMD_DONE;					return CS_SUCCEED;				}				switch (cmd->results_state) {				case _CS_RES_INIT:				case _CS_RES_STATUS:					if (done_flags & TDS_DONE_ERROR)						*result_type = CS_CMD_FAIL;					else						*result_type = CS_CMD_SUCCEED;					cmd->results_state = _CS_RES_CMD_DONE;					break;				case _CS_RES_RESULTSET_EMPTY:					if (cmd->command_type == CS_CUR_CMD) {						*result_type = CS_CURSOR_RESULT;						cmd->results_state = _CS_RES_RESULTSET_ROWS;					} else {						*result_type = CS_ROW_RESULT;						cmd->results_state = _CS_RES_CMD_DONE;					}					break;				case _CS_RES_RESULTSET_ROWS:					*result_type = CS_CMD_DONE;					cmd->results_state = _CS_RES_INIT;					break;				}				return CS_SUCCEED;				break;			case TDS_DONEINPROC_RESULT:				/*				 * A doneinproc token may signify the end of a				 * logical command if the command had a result				 * set. Otherwise it is ignored....				 */				switch (cmd->results_state) {				case _CS_RES_INIT:   /* command had no result set */					break;				case _CS_RES_RESULTSET_EMPTY:					if (cmd->command_type == CS_CUR_CMD) {						*result_type = CS_CURSOR_RESULT;					} else {						*result_type = CS_ROW_RESULT;					}					cmd->results_state = _CS_RES_CMD_DONE;					return CS_SUCCEED;					break;				case _CS_RES_RESULTSET_ROWS:					*result_type = CS_CMD_DONE;					cmd->results_state = _CS_RES_INIT;					return CS_SUCCEED;					break;				}				break;			case TDS_DONEPROC_RESULT:				/*				 * A DONEPROC result means the end of a logical				 * command only if it was one of the commands				 * directly sent from ct_send, not as a result				 * of a nested stored procedure call. We know				 * if this is the case if a STATUS_RESULT was				 * received immediately prior to the DONE_PROC				 */				if (cmd->results_state == _CS_RES_STATUS) {					if (done_flags & TDS_DONE_ERROR)						*result_type = CS_CMD_FAIL;					else						*result_type = CS_CMD_SUCCEED;					cmd->results_state = _CS_RES_CMD_DONE;					return CS_SUCCEED;				} else {					if (cmd->command_type == CS_DYNAMIC_CMD) {						*result_type = CS_CMD_SUCCEED;						cmd->results_state = _CS_RES_CMD_DONE;						return CS_SUCCEED;					}				}				break;			case TDS_PARAM_RESULT:				cmd->row_prefetched = 1;				*result_type = res_type;				return CS_SUCCEED;				break;			case TDS_STATUS_RESULT:				_ct_process_return_status(tds);				cmd->row_prefetched = 1;				*result_type = res_type;				cmd->results_state = _CS_RES_STATUS;				return CS_SUCCEED;				break;			case TDS_DESCRIBE_RESULT:				if (cmd->dynamic_cmd == CS_DESCRIBE_INPUT ||					cmd->dynamic_cmd == CS_DESCRIBE_OUTPUT) {					*result_type = res_type;					return CS_SUCCEED;				}				break;			default:				*result_type = res_type;				return CS_SUCCEED;				break;			}			break;		case TDS_NO_MORE_RESULTS:			/* some commands can be re-sent once completed */			/* so mark the command state as 'ready'...     */			if (cmd->command_type == CS_LANG_CMD ||				cmd->command_type == CS_RPC_CMD ||				cmd->command_type == CS_CUR_CMD ||				cmd->command_type == CS_DYNAMIC_CMD) {				ct_set_command_state(cmd, _CS_COMMAND_READY);			}			/* if we have just completed processing a dynamic deallocate */			/* get rid of our dynamic statement structure...             */			if (cmd->command_type == CS_DYNAMIC_CMD &&				cmd->dynamic_cmd  == CS_DEALLOC) {				_ct_deallocate_dynamic(cmd->con, cmd->dyn);				cmd->dyn = NULL;			}			return CS_END_RESULTS;			break;		case TDS_CANCELLED:			cmd->cancel_state = _CS_CANCEL_NOCANCEL;			return CS_CANCELED;			break;		case TDS_FAIL:		default:			return CS_FAIL;			break;		}  /* switch (tdsret) */	}      /* for (;;)        */}CS_RETCODEct_bind(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT * copied, CS_SMALLINT * indicator){	TDSCOLUMN *colinfo;	TDSRESULTINFO *resinfo;	TDSSOCKET *tds;	CS_CONNECTION *con = cmd->con;	CS_INT bind_count;	tdsdump_log(TDS_DBG_FUNC, "ct_bind() datafmt count = %d column_number = %d\n", datafmt->count, item);	if (!con || !con->tds_socket)		return CS_FAIL;	tds = con->tds_socket;	resinfo = tds->current_results;	/* check item value */	if (!resinfo || item <= 0 || item > resinfo->num_cols)		return CS_FAIL;	colinfo = resinfo->columns[item - 1];	/* check whether the request is for array binding and ensure that user */	/* supplies the same datafmt->count to the subsequent ct_bind calls    */	bind_count = (datafmt->count == 0) ? 1 : datafmt->count;	/* first bind for this result set */	if (cmd->bind_count == CS_UNUSED) {		cmd->bind_count = bind_count;	} else {		/* all subsequent binds for this result set - the bind counts must be the same */		if (cmd->bind_count != bind_count) {			_ctclient_msg(con, "ct_bind", 1, 1, 1, 137, "%d, %d", bind_count, cmd->bind_count);			return CS_FAIL;		}	}	/* bind the column_varaddr to the address of the buffer */	colinfo = resinfo->columns[item - 1];	colinfo->column_varaddr = (char *) buffer;	colinfo->column_bindtype = datafmt->datatype;	colinfo->column_bindfmt = datafmt->format;	colinfo->column_bindlen = datafmt->maxlength;	if (indicator) {		colinfo->column_nullbind = indicator;	}	if (copied) {		colinfo->column_lenbind = copied;	}	return CS_SUCCEED;}CS_RETCODEct_fetch(CS_COMMAND * cmd, CS_INT type, CS_INT offset, CS_INT option, CS_INT * rows_read){	TDS_INT ret_type;	TDS_INT ret;	TDS_INT marker;	TDS_INT temp_count;	TDSSOCKET *tds;	tdsdump_log(TDS_DBG_FUNC, "ct_fetch()\n");	if (!cmd->con || !cmd->con->tds_socket)		return CS_FAIL;	if (cmd->command_state == _CS_COMMAND_IDLE) {		_ctclient_msg(cmd->con, "ct_fetch", 1, 1, 1, 16843163, "");		return CS_FAIL;	}	if (cmd->cancel_state == _CS_CANCEL_PENDING) {		_ct_cancel_cleanup(cmd);		return CS_CANCELED;	}	tds = cmd->con->tds_socket;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜一区二区三区| 色综合亚洲欧洲| 精品国产一区二区三区忘忧草| 亚洲成年人网站在线观看| 欧美日韩视频一区二区| 三级在线观看一区二区| 欧美精品九九99久久| 乱中年女人伦av一区二区| 精品国产在天天线2019| 成人av免费在线观看| 亚洲素人一区二区| 欧美中文字幕亚洲一区二区va在线| 亚洲图片欧美视频| 日韩午夜av一区| 成人蜜臀av电影| 亚洲综合色区另类av| 欧美成人video| 国产精品一区不卡| 亚洲另类春色国产| 欧美一区二区福利在线| 国产一区二区三区精品欧美日韩一区二区三区 | 青青草原综合久久大伊人精品 | 欧美一区二区高清| 大白屁股一区二区视频| 亚洲精品美腿丝袜| 欧美成va人片在线观看| 成人毛片视频在线观看| 亚洲国产精品尤物yw在线观看| 51精品视频一区二区三区| 国产黄色精品视频| 一区二区免费看| 欧美精品一区男女天堂| 91网站视频在线观看| 日本不卡在线视频| 中文字幕一区二区视频| 91精品国产91久久久久久最新毛片 | 久久99精品国产麻豆婷婷| 国产日产精品1区| 欧美亚洲自拍偷拍| 国产成人午夜视频| 视频在线观看国产精品| 国产精品久久久久久久久免费丝袜 | 欧美成人精品1314www| 粉嫩av一区二区三区| 亚洲国产精品久久久男人的天堂| 日韩视频一区二区三区在线播放 | 日韩国产欧美三级| 亚洲人成伊人成综合网小说| 日韩无一区二区| 97久久超碰精品国产| 韩日精品视频一区| 日日噜噜夜夜狠狠视频欧美人| 中文字幕av一区二区三区高| 91精品国产综合久久婷婷香蕉| 暴力调教一区二区三区| 久久99精品国产.久久久久久| 又紧又大又爽精品一区二区| 久久久久久久久久看片| 欧美一级一级性生活免费录像| 91老师国产黑色丝袜在线| 国产精品一二三| 免费视频一区二区| 日产精品久久久久久久性色| 亚洲欧美电影院| 中文字幕va一区二区三区| 久久综合久久综合亚洲| 日韩欧美国产综合| 91精品欧美一区二区三区综合在 | 国产激情视频一区二区三区欧美| 丝袜美腿一区二区三区| 夜夜嗨av一区二区三区四季av| 国产精品精品国产色婷婷| 欧美国产国产综合| 国产精品免费视频观看| 国产女人aaa级久久久级| 久久久青草青青国产亚洲免观| 精品久久国产字幕高潮| 欧美va亚洲va在线观看蝴蝶网| 精品1区2区3区| 欧美日本在线一区| 678五月天丁香亚洲综合网| 欧美电影一区二区| 91精品国产一区二区三区| 欧美巨大另类极品videosbest| 欧美视频一区二区三区在线观看 | 免费观看30秒视频久久| 日本成人在线电影网| 免费欧美在线视频| 激情偷乱视频一区二区三区| 国产精品影视在线观看| 国产不卡免费视频| 视频在线观看91| 久久精品国产成人一区二区三区| 日本不卡视频在线| 国产一区二区精品久久91| 欧美午夜免费电影| 精品处破学生在线二十三| 精品奇米国产一区二区三区| 精品成人在线观看| 久久精品免视看| 日本一区二区免费在线| 亚洲欧美视频在线观看视频| 性久久久久久久久久久久| 免费在线观看不卡| 成人午夜私人影院| 欧美优质美女网站| 日韩三级视频在线看| 欧美国产日韩一二三区| 亚洲理论在线观看| 精品综合久久久久久8888| 丁香一区二区三区| 欧美午夜在线观看| 精品国一区二区三区| 亚洲色图第一区| 免费高清成人在线| 成人av片在线观看| 欧美精品九九99久久| 国产三级精品在线| 亚洲电影欧美电影有声小说| 国产精品一级片在线观看| 色综合天天综合色综合av | 亚洲一区二区三区四区在线免费观看| 日韩极品在线观看| 国产精品一级片| 欧美人xxxx| 中文字幕在线观看不卡视频| 日韩经典一区二区| 91亚洲男人天堂| 欧美一区二区视频网站| 国产精品视频yy9299一区| 奇米影视一区二区三区小说| 9i在线看片成人免费| 日韩免费看网站| 亚洲精品视频一区二区| 国产一区二区三区免费| 欧美日韩视频在线一区二区| 欧美国产精品一区二区三区| 奇米色一区二区| 色诱亚洲精品久久久久久| 欧美精品一区二区三区很污很色的 | 亚洲精品乱码久久久久久久久 | 欧美一级片在线| 一区二区三区中文字幕在线观看| 久国产精品韩国三级视频| 欧洲视频一区二区| 国产精品少妇自拍| 国产高清精品在线| 日韩精品一区国产麻豆| 日韩中文字幕一区二区三区| 91在线精品一区二区三区| 久久免费看少妇高潮| 免费在线观看一区| 欧美精品丝袜中出| 午夜精品福利一区二区三区av| jlzzjlzz亚洲女人18| 欧美国产欧美亚州国产日韩mv天天看完整| 久久国产婷婷国产香蕉| 欧美日韩国产综合一区二区 | 精品久久久久久亚洲综合网| 偷拍自拍另类欧美| 欧美日韩dvd在线观看| 亚洲综合无码一区二区| 91女人视频在线观看| 国产精品毛片无遮挡高清| 国产寡妇亲子伦一区二区| 久久久久久久电影| 国产a久久麻豆| 国产蜜臀97一区二区三区| 国产电影精品久久禁18| 久久久综合精品| 国产91露脸合集magnet| 国产精品麻豆一区二区 | 视频一区视频二区中文| 欧美性受极品xxxx喷水| 五月综合激情网| 91精品久久久久久蜜臀| 欧美aⅴ一区二区三区视频| 欧美三级中文字幕在线观看| 亚洲午夜免费电影| 欧美精品久久天天躁| 美女一区二区视频| 国产色综合一区| 91视频观看视频| 夜夜夜精品看看| 91精品国产乱码久久蜜臀| 日韩激情av在线| 久久综合丝袜日本网| 成人毛片视频在线观看| 亚洲精品乱码久久久久| 欧美群妇大交群中文字幕| 奇米精品一区二区三区在线观看 | 久久精品国产一区二区三| 国产亚洲欧美日韩日本| eeuss鲁片一区二区三区| 亚洲六月丁香色婷婷综合久久 | 国产午夜亚洲精品不卡| 99久久精品国产一区| 亚洲国产精品视频| 欧美精品一区二区三区蜜臀| 成人免费视频免费观看|