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

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

?? ct.c

?? 在Linux/Unix下面訪問WINDOWS SQLSERVER 的ODBC驅(qū)動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
		return SYBBINARY;		break;	case CS_BIT_TYPE:		return SYBBIT;		break;	case CS_CHAR_TYPE:		return SYBCHAR;		break;	case CS_LONG_TYPE:		return SYBINT8;		break;	case CS_INT_TYPE:		return SYBINT4;		break;	case CS_SMALLINT_TYPE:		return SYBINT2;		break;	case CS_TINYINT_TYPE:		return SYBINT1;		break;	case CS_REAL_TYPE:		return SYBREAL;		break;	case CS_FLOAT_TYPE:		return SYBFLT8;		break;	case CS_MONEY_TYPE:		return SYBMONEY;		break;	case CS_MONEY4_TYPE:		return SYBMONEY4;		break;	case CS_DATETIME_TYPE:		return SYBDATETIME;		break;	case CS_DATETIME4_TYPE:		return SYBDATETIME4;		break;	case CS_NUMERIC_TYPE:		return SYBNUMERIC;		break;	case CS_DECIMAL_TYPE:		return SYBDECIMAL;		break;	case CS_VARBINARY_TYPE:		return SYBVARBINARY;		break;	case CS_TEXT_TYPE:		return SYBTEXT;		break;	case CS_UNIQUE_TYPE:		return SYBUNIQUE;		break;	case CS_LONGBINARY_TYPE:	/* vicm */		return SYBLONGBINARY;		break;	case CS_UNICHAR_TYPE:		return SYBVARCHAR;	default:		return -1;		break;	}}CS_RETCODEct_cancel(CS_CONNECTION * conn, CS_COMMAND * cmd, CS_INT type){	CS_RETCODE ret;	CS_COMMAND_LIST *cmds;	CS_COMMAND *conn_cmd;	CS_CONNECTION *cmd_conn;	tdsdump_log(TDS_DBG_FUNC, "ct_cancel()\n");	/*	 * Comments taken from Sybase ct-library reference manual	 * ------------------------------------------------------	 *	 * "To cancel current results, an application calls ct_cancel	 *  with type as CT_CANCEL CURRENT. This is equivalent to	 *  calling ct_fetch until it returns CS_END_DATA"	 *	 * "For CS_CANCEL_CURRENT cancels, cmd must be supplied"	 * "For CS_CANCEL_CURRENT cancels, connection must be NULL"	 */	if (type == CS_CANCEL_CURRENT) {		tdsdump_log(TDS_DBG_FUNC, "CS_CANCEL_CURRENT\n");		if (conn || !cmd)			return CS_FAIL;		if (!_ct_fetchable_results(cmd)) {			tdsdump_log(TDS_DBG_FUNC, "ct_cancel() no fetchable results - return()\n");			return CS_SUCCEED;		}		tdsdump_log(TDS_DBG_FUNC, "ct_cancel() - fetching results()\n");		do {			ret = ct_fetch(cmd, CS_UNUSED, CS_UNUSED, CS_UNUSED, NULL);		} while ((ret == CS_SUCCEED) || (ret == CS_ROW_FAIL));		if (cmd->con && cmd->con->tds_socket)			tds_free_all_results(cmd->con->tds_socket);		if (ret == CS_END_DATA) {			return CS_SUCCEED;		}		return CS_FAIL;	}	/*	 * Comments taken from Sybase ct-library reference manual	 * ------------------------------------------------------	 *	 * "To cancel the current command and all results generated	 *  by it, call ct_cancel with type as CS_CANCEL_ATTN or	 *  CS_CANCEL_ALL. Both of these calls tell client library	 *  to :	 *  * Send an attention to the server	 *  * discard any results already generated by the command	 *  Both types of cancel return CS_SUCCEED immediately, w/o	 *  sending an attention, if no command is in progress.	 *  If an application has not yet called ct_send to send an	 *  initiated command, a CS_CANCEL_ATTN has no effect.	 *	 *  If a command has been sent and ct_results has not been	 *  called, a ct_cancel (CS_CANCEL_ATTN) has no effect."	 *	 * "For CS_CANCEL_ATTN cancels, one of connection or cmd	 *  must be NULL. if cmd is supplied and connection is NULL	 *  the cancel operation applies only to the command pend-	 *  ing for this command structure. If cmd is NULL and	 *  connection is supplied, the cancel operation applies to	 *  all commands pending for this connection.	 */	if (type == CS_CANCEL_ATTN) {		if ((conn && cmd) || (!conn && !cmd)) {			return CS_FAIL;		}		if (cmd) {			tdsdump_log(TDS_DBG_FUNC, "CS_CANCEL_ATTN with cmd\n");			cmd_conn = cmd->con;			switch (cmd->command_state) {				case _CS_COMMAND_IDLE:				case _CS_COMMAND_READY:					tdsdump_log(TDS_DBG_FUNC, "ct_cancel() command state READY/IDLE\n");					break;				case _CS_COMMAND_SENT:					tdsdump_log(TDS_DBG_FUNC, "ct_cancel() command state SENT results_state %d\n", cmd->results_state);					if (cmd->results_state != _CS_RES_NONE) {						tdsdump_log(TDS_DBG_FUNC, "ct_cancel() sending a cancel \n");						tds_send_cancel(cmd_conn->tds_socket);						cmd->cancel_state = _CS_CANCEL_PENDING;					}					break;			}		}		if (conn) {			tdsdump_log(TDS_DBG_FUNC, "CS_CANCEL_ATTN with connection\n");			for (cmds = conn->cmds; cmds != NULL; cmds = cmds->next) {				conn_cmd = cmds->cmd;				switch (conn_cmd->command_state) {					case _CS_COMMAND_IDLE:					case _CS_COMMAND_READY:						tdsdump_log(TDS_DBG_FUNC, "ct_cancel() command state READY/IDLE\n");						break;					case _CS_COMMAND_SENT:						tdsdump_log(TDS_DBG_FUNC, "ct_cancel() command state SENT\n");						if (conn_cmd->results_state != _CS_RES_NONE) {							tdsdump_log(TDS_DBG_FUNC, "ct_cancel() sending a cancel \n");							tds_send_cancel(conn->tds_socket);							conn_cmd->cancel_state = _CS_CANCEL_PENDING;						}					break;				}			}		}		return CS_SUCCEED;	}	/*	 * Comments taken from Sybase ct-library reference manual	 * ------------------------------------------------------	 *	 * "To cancel the current command and all results generated	 *  by it, call ct_cancel with type as CS_CANCEL_ATTN or	 *  CS_CANCEL_ALL. Both of these calls tell client library	 *  to :	 *  * Send an attention to the server	 *  * discard any results already generated by the command	 *  Both types of cancel return CS_SUCCEED immediately, w/o	 *  sending an attention, if no command is in progress.	 *	 *  If an application has not yet called ct_send to send an	 *  initiated command, a CS_CANCEL_ALL cancel discards the	 *  initiated command without sending an attention to the	 *  server.	 *	 *  CS_CANCEL_ALL leaves the command structure in a 'clean'	 *  state, available for use in another operation.	 *	 * "For CS_CANCEL_ALL cancels, one of connection or cmd	 *  must be NULL. if cmd is supplied and connection is NULL	 *  the cancel operation applies only to the command pend-	 *  ing for this command structure. If cmd is NULL and	 *  connection is supplied, the cancel operation applies to	 *  all commands pending for this connection.	 */	if (type == CS_CANCEL_ALL) {		if ((conn && cmd) || (!conn && !cmd)) {			return CS_FAIL;		}		if (cmd) {			tdsdump_log(TDS_DBG_FUNC, "CS_CANCEL_ALL with cmd\n");			cmd_conn = cmd->con;			switch (cmd->command_state) {				case _CS_COMMAND_IDLE:				case _CS_COMMAND_BUILDING:				case _CS_COMMAND_READY:					tdsdump_log(TDS_DBG_FUNC, "ct_cancel() command state READY/IDLE\n");					_ct_initialise_cmd(cmd);					break;				case _CS_COMMAND_SENT:					tdsdump_log(TDS_DBG_FUNC, "ct_cancel() command state SENT\n");					tdsdump_log(TDS_DBG_FUNC, "ct_cancel() sending a cancel \n");					tds_send_cancel(cmd_conn->tds_socket);					tds_process_cancel(cmd_conn->tds_socket);					_ct_initialise_cmd(cmd);					break;			}		}		if (conn) {			tdsdump_log(TDS_DBG_FUNC, "CS_CANCEL_ALL with connection\n");			for (cmds = conn->cmds; cmds != NULL; cmds = cmds->next) {				tdsdump_log(TDS_DBG_FUNC, "ct_cancel() cancelling a command for a connection\n");				conn_cmd = cmds->cmd;				switch (conn_cmd->command_state) {					case _CS_COMMAND_IDLE:					case _CS_COMMAND_BUILDING:					case _CS_COMMAND_READY:						tdsdump_log(TDS_DBG_FUNC, "ct_cancel() command state SENT\n");						_ct_initialise_cmd(conn_cmd);						break;					case _CS_COMMAND_SENT:						tdsdump_log(TDS_DBG_FUNC, "ct_cancel() command state SENT\n");						tdsdump_log(TDS_DBG_FUNC, "ct_cancel() sending a cancel \n");						tds_send_cancel(conn->tds_socket);						tds_process_cancel(conn->tds_socket);						_ct_initialise_cmd(conn_cmd);					break;				}			}		}		return CS_SUCCEED;	}	return CS_FAIL;}static CS_RETCODE_ct_cancel_cleanup(CS_COMMAND * cmd){	CS_CONNECTION * con;	con = cmd->con;	if (con && !IS_TDSDEAD(con->tds_socket))		tds_process_cancel(con->tds_socket);	cmd->cancel_state = _CS_CANCEL_NOCANCEL;	return CS_SUCCEED;}CS_RETCODEct_describe(CS_COMMAND * cmd, CS_INT item, CS_DATAFMT * datafmt){	TDSSOCKET *tds;	TDSRESULTINFO *resinfo;	TDSCOLUMN *curcol;	int len;	tdsdump_log(TDS_DBG_FUNC, "ct_describe()\n");	if (!cmd->con || !cmd->con->tds_socket)		return CS_FAIL;	tds = cmd->con->tds_socket;	resinfo = tds->current_results;;	if (item < 1 || item > resinfo->num_cols)		return CS_FAIL;	curcol = resinfo->columns[item - 1];	len = curcol->column_namelen;	if (len >= CS_MAX_NAME)		len = CS_MAX_NAME - 1;	strncpy(datafmt->name, curcol->column_name, len);	/* name is always null terminated */	datafmt->name[len] = 0;	datafmt->namelen = len;	/* need to turn the SYBxxx into a CS_xxx_TYPE */	datafmt->datatype = _ct_get_client_type(curcol->column_type, curcol->column_usertype, curcol->column_size);	tdsdump_log(TDS_DBG_INFO1, "ct_describe() datafmt->datatype = %d server type %d\n", datafmt->datatype,		    curcol->column_type);	/* FIXME is ok this value for numeric/decimal? */	datafmt->maxlength = curcol->column_size;	datafmt->usertype = curcol->column_usertype;	datafmt->precision = curcol->column_prec;	datafmt->scale = curcol->column_scale;	/*	 * There are other options that can be returned, but these are the	 * only two being noted via the TDS layer.	 */	datafmt->status = 0;	if (curcol->column_nullable)		datafmt->status |= CS_CANBENULL;	if (curcol->column_identity)		datafmt->status |= CS_IDENTITY;	if (strcmp(datafmt->name, "txts") == 0)		datafmt->status |= CS_TIMESTAMP;	datafmt->count = 1;	datafmt->locale = NULL;	return CS_SUCCEED;}CS_RETCODEct_res_info(CS_COMMAND * cmd, CS_INT type, CS_VOID * buffer, CS_INT buflen, CS_INT * out_len){	TDSSOCKET *tds;	TDSRESULTINFO *resinfo;	TDSCOLUMN *curcol;	CS_INT int_val;	int i;	tdsdump_log(TDS_DBG_FUNC, "ct_res_info()\n");	if (!cmd->con || !cmd->con->tds_socket)		return CS_FAIL;	tds = cmd->con->tds_socket;	resinfo = tds->current_results;	switch (type) {	case CS_NUMDATA:		int_val = 0;		if (resinfo) {			for (i = 0; i < resinfo->num_cols; i++) {				curcol = resinfo->columns[i];				if (!curcol->column_hidden) {					int_val++;				}			}		}		tdsdump_log(TDS_DBG_FUNC, "ct_res_info(): Number of columns is %d\n", int_val);		memcpy(buffer, &int_val, sizeof(CS_INT));		break;	case CS_ROW_COUNT:		/* TODO 64 -> 32 bit conversion check overflow */		int_val = tds->rows_affected;		tdsdump_log(TDS_DBG_FUNC, "ct_res_info(): Number of rows is %d\n", int_val);		memcpy(buffer, &int_val, sizeof(CS_INT));		break;	default:		fprintf(stderr, "Unknown type in ct_res_info: %d\n", type);		return CS_FAIL;		break;	}	return CS_SUCCEED;}CS_RETCODEct_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen){	CS_RETCODE ret = CS_SUCCEED;	CS_INT *buf = (CS_INT *) buffer;	tdsdump_log(TDS_DBG_FUNC, "ct_config() action = %s property = %d\n",		    CS_GET ? "CS_GET" : CS_SET ? "CS_SET" : CS_SUPPORTED ? "CS_SUPPORTED" : "CS_CLEAR", property);	switch (property) {	case CS_EXPOSE_FMTS:		switch (action) {		case CS_SUPPORTED:			*buf = CS_TRUE;			break;		case CS_SET:			if (*buf != CS_TRUE && *buf != CS_FALSE)				ret = CS_FAIL;			else				ctx->config.cs_expose_formats = *buf;			break;		case CS_GET:			if (buf)				*buf = ctx->config.cs_expose_formats;			else				ret = CS_FAIL;			break;		case CS_CLEAR:			ctx->config.cs_expose_formats = CS_FALSE;			break;		default:			ret = CS_FAIL;		}		break;	case CS_VER_STRING: {		ret = CS_FAIL;		switch (action) {			case CS_GET: {				if (buffer && buflen > 0 && outlen) {					const TDS_COMPILETIME_SETTINGS *settings= tds_get_compiletime_settings();					*outlen= snprintf((char*)buffer, buflen, "%s (%s, default tds version=%s)",						settings->freetds_version,						(settings->threadsafe ? "threadsafe" : "non-threadsafe"),						settings->tdsver					);					((char*)buffer)[buflen - 1]= 0;					if (*outlen < 0)						*outlen = strlen((char*) buffer);					ret = CS_SUCCEED;				}				break;				default:					ret = CS_FAIL;					break;				}			}		}		break;	case CS_VERSION:		ret = CS_FAIL;		switch (action) {			case CS_GET: {				if (buffer && buflen > 0 && outlen) {					const TDS_COMPILETIME_SETTINGS *settings= tds_get_compiletime_settings();					*outlen= snprintf(buffer, buflen, "%s", settings->freetds_version);					((char*)buffer)[buflen - 1]= 0;					if (*outlen < 0)						*outlen = strlen((char*) buffer);					ret = CS_SUCCEED;				}				break;			default:				ret = CS_FAIL;				break;			}		}		break;	default:		ret = CS_SUCCEED;		break;	}	return ret;}CS_RETCODEct_cmd_props(CS_COMMAND * cmd, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen){	TDSSOCKET *tds;	TDSCURSOR *cursor;	int maxcp;	if (!cmd->con || !cmd->con->tds_socket)		return CS_FAIL;	tds = cmd->con->tds_socket;	tdsdump_log(TDS_DBG_FUNC, "ct_cmd_props() action = %s property = %d\n", CS_GET ? "CS_GET" : "CS_SET", property);	if (action == CS_SET) {		switch (property) {		case CS_USERDATA:			free(cmd->userdata);			cmd->userdata = (void *) malloc(buflen + 1);			tdsdump_log(TDS_DBG_INFO2, "setting userdata orig %p new %p\n", buffer, cmd->userdata);			cmd->userdata_len = buflen;			memcpy(cmd->userdata, buffer, buflen);			break;		default:			break;		}	}	if (action == CS_GET) {		switch (property) {		case CS_PARENT_HANDLE:			*(CS_CONNECTION **) buffer = cmd->con;			break;		case CS_C

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆一区二区99久久久久| 国产精品乱码久久久久久| 亚洲图片有声小说| 色8久久人人97超碰香蕉987| 综合久久给合久久狠狠狠97色| 国产精品18久久久久久久久| 国产亚洲欧美在线| 成人三级在线视频| 亚洲图片你懂的| 欧美综合一区二区三区| 五月激情综合婷婷| 7777精品伊人久久久大香线蕉最新版| 午夜久久久影院| 日韩欧美电影一区| 成人性生交大片免费| 中文字幕一区二区在线观看| 欧洲色大大久久| 六月丁香综合在线视频| 国产日韩欧美一区二区三区乱码| 懂色av一区二区三区免费看| 亚洲欧美福利一区二区| 欧美精品久久一区二区三区| 国产乱子轮精品视频| 中文字幕日本乱码精品影院| 欧美视频精品在线观看| 国产剧情一区二区三区| 亚洲欧美日韩国产一区二区三区| 欧美日韩免费在线视频| 精品一区二区久久| 亚洲欧美日韩精品久久久久| 日韩午夜在线观看视频| 成人av动漫网站| 亚洲电影中文字幕在线观看| 欧美精品一区二区三区久久久| av一本久道久久综合久久鬼色| 午夜电影一区二区| 国产精品久久久久久户外露出| 欧美日韩极品在线观看一区| 国产成人亚洲综合a∨婷婷图片| 亚洲福中文字幕伊人影院| 国产三级精品三级在线专区| 4438x亚洲最大成人网| 国产福利精品导航| 日韩激情中文字幕| 亚洲欧洲制服丝袜| 国产三级欧美三级| 91精品欧美综合在线观看最新| 丁香六月综合激情| 久久精品国内一区二区三区| 亚洲综合999| 中文字幕日韩av资源站| 久久久午夜精品| 欧美丰满高潮xxxx喷水动漫| 色综合久久久网| 成人亚洲一区二区一| 蜜臀a∨国产成人精品| 一区二区三区在线观看欧美| 欧美高清在线一区| 精品盗摄一区二区三区| 777亚洲妇女| 精品视频一区 二区 三区| 91影院在线免费观看| 国产精品中文有码| 精品一区二区影视| 奇米在线7777在线精品| 午夜欧美电影在线观看| 亚洲大型综合色站| 亚洲最大的成人av| 亚洲毛片av在线| 亚洲青青青在线视频| 日韩一区欧美小说| 中文字幕亚洲综合久久菠萝蜜| 久久久五月婷婷| 久久一夜天堂av一区二区三区| 日韩一卡二卡三卡| 日韩视频在线观看一区二区| 67194成人在线观看| 91.com在线观看| 777xxx欧美| 欧美xxx久久| 日韩精品一区二区三区在线观看| 欧美酷刑日本凌虐凌虐| 欧美精品一二三四| 91精品一区二区三区在线观看| 欧美视频日韩视频| 欧美电影在哪看比较好| 欧美一区二区久久| 欧美电视剧在线观看完整版| 日韩亚洲欧美一区| 久久久亚洲精品一区二区三区| 久久九九久久九九| 中文字幕精品一区| 1024亚洲合集| 亚洲成人中文在线| 久久精品噜噜噜成人88aⅴ| 精品在线播放午夜| 成人在线一区二区三区| 91浏览器打开| 欧美日韩成人综合| 欧美成人性战久久| 久久久精品免费观看| 亚洲欧洲成人自拍| 亚洲亚洲精品在线观看| 奇米色一区二区三区四区| 麻豆精品国产传媒mv男同| 国产精品综合在线视频| 99久久精品情趣| 欧美色区777第一页| 日韩欧美成人午夜| 国产精品久久久久影院亚瑟| 伊人性伊人情综合网| 久久国产婷婷国产香蕉| 成人黄色网址在线观看| 欧美午夜不卡视频| 久久你懂得1024| 日韩伦理电影网| 人妖欧美一区二区| 99re成人在线| 日韩一级欧美一级| 中文字幕日韩一区二区| 日av在线不卡| 99视频在线观看一区三区| 欧美一卡二卡在线观看| 日本一区二区三区国色天香 | 视频一区在线播放| 国产成a人无v码亚洲福利| 欧美性欧美巨大黑白大战| 欧美电影免费提供在线观看| 亚洲色图清纯唯美| 激情文学综合网| 欧美日韩一区高清| 国产人成一区二区三区影院| 亚洲成人免费观看| 99视频国产精品| 久久一区二区三区四区| 亚洲一区二区三区中文字幕| 国产精品一区免费在线观看| 欧美精品一二三区| 亚洲欧美色综合| 国产夫妻精品视频| 日韩欧美中文字幕制服| 亚洲最大的成人av| 波多野结衣的一区二区三区| 日韩视频123| 亚洲一区二区三区四区在线| 成人蜜臀av电影| 欧美变态口味重另类| 偷窥少妇高潮呻吟av久久免费| av影院午夜一区| 久久久99精品久久| 久久精品国产99国产精品| 欧美日韩一区二区电影| 国产精品不卡在线观看| 国产精品亚洲成人| 精品99久久久久久| 免费观看91视频大全| 欧美日韩一级二级| 亚洲一区二区视频| 91啪亚洲精品| 日韩伦理电影网| 91一区在线观看| 亚洲欧美在线另类| 99久久精品一区二区| 国产精品乱码一区二区三区软件 | 欧美日韩免费一区二区三区| 亚洲天堂网中文字| 99国产精品久久久| 一区二区中文字幕在线| 99久久99久久免费精品蜜臀| 国产日韩精品一区二区浪潮av| 激情综合网激情| 日韩欧美国产不卡| 国产在线精品免费| 久久久精品影视| 丁香婷婷综合色啪| 国产精品丝袜91| caoporen国产精品视频| 国产精品成人网| 色乱码一区二区三区88| 亚洲午夜久久久久久久久电影网 | 高清不卡一区二区| 中文字幕在线一区免费| 色综合久久88色综合天天免费| 亚洲女女做受ⅹxx高潮| 欧美日韩色一区| 久久er99精品| 国产日韩欧美电影| 99久久伊人久久99| 亚洲成年人网站在线观看| 4hu四虎永久在线影院成人| 美腿丝袜在线亚洲一区| 精品蜜桃在线看| 成人av综合一区| 一区二区在线电影| 欧美一级理论片| 高清av一区二区| 亚洲国产一区视频| 日韩精品一区二区三区三区免费 | 青青草97国产精品免费观看无弹窗版 | 亚洲一本大道在线|