⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dblib.c

📁 ncbi源码
💻 C
📖 第 1 页 / 共 5 页
字号:
TDSRESULTINFO * resinfo;TDSSOCKET * tds;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	colinfo = resinfo->columns[colnum-1];#ifdef NCBI_FTDS   return colinfo->full_column_name;#else	return colinfo->column_name;#endif}DBINT dbcollen(DBPROCESS *dbproc, int column){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDSSOCKET * tds;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	if (column<1 || column>resinfo->num_cols) return -1;	colinfo = resinfo->columns[column-1];	return colinfo->column_size;}/* dbvarylen(), pkleef@openlinksw.com 01/21/02 */DBINT dbvarylen(DBPROCESS *dbproc, int column){TDSCOLINFO * colinfo;TDSRESULTINFO *resinfo;TDSSOCKET *tds;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	if (column<1 || column>resinfo->num_cols) 		return FALSE;	colinfo = resinfo->columns[column-1];	if (tds_get_null (resinfo->current_row, column))		return TRUE;	switch (colinfo->column_type) {		/* variable length fields */		case SYBNVARCHAR:		case SYBVARBINARY:		case SYBVARCHAR:				return TRUE;				/* types that can be null */		case SYBBITN:		case SYBDATETIMN:		case SYBDECIMAL:		case SYBFLTN:		case SYBINTN:		case SYBMONEYN:		case SYBNUMERIC:				return TRUE;		/* blob types */		case SYBIMAGE:		case SYBNTEXT:		case SYBTEXT:				return TRUE;	}	return FALSE;}DBINT dbdatlen(DBPROCESS *dbproc, int column){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDSSOCKET * tds;DBINT ret;	/* FIXME -- this is the columns info, need per row info */	/* Fixed by adding cur_row_size to colinfo, filled in by process_row		in token.c. (mlilback, 11/7/01) */	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	if (column<1 || column>resinfo->num_cols) return -1;	colinfo = resinfo->columns[column-1];	tdsdump_log(TDS_DBG_INFO1, "%L dbdatlen() type = %d\n",colinfo->column_type);		if (tds_get_null(resinfo->current_row,column-1))		ret = 0;	else		ret = colinfo->cur_row_size;	tdsdump_log(TDS_DBG_FUNC, "%L leaving dbdatlen() returning %d\n",ret);	return ret;}BYTE *dbdata(DBPROCESS *dbproc, int column){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDS_VARBINARY *varbin; register TDS_SMALLINT t;	resinfo = dbproc->tds_socket->res_info;	if (column<1 || column>resinfo->num_cols) return NULL;	if (tds_get_null(resinfo->current_row,column-1)) {		return NULL;	}	colinfo = resinfo->columns[column-1];	t= colinfo->column_type;	if (is_blob_type(t)) {		return (BYTE *)colinfo->column_textvalue;	} 	if (t == SYBVARBINARY) {		varbin = (TDS_VARBINARY *)			&(resinfo->current_row[colinfo->column_offset]);		return (BYTE *)varbin->array;	}	/* else */	return &resinfo->current_row[colinfo->column_offset];}RETCODE dbcancel(DBPROCESS *dbproc){   tds_send_cancel(dbproc->tds_socket);   tds_process_cancel(dbproc->tds_socket);   /* tds_process_default_tokens(dbproc->tds_socket,CANCEL); */   return SUCCEED;}DBINT dbspr1rowlen(DBPROCESS *dbproc){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDSSOCKET * tds;int col,len=0,collen,namlen;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	for (col=0;col<resinfo->num_cols;col++)	{		colinfo = resinfo->columns[col];		collen = _get_printable_size(colinfo);		namlen = strlen(colinfo->column_name);		len += collen > namlen ? collen : namlen;	}	/* the space between each column */	len += resinfo->num_cols - 1;	/* the newline */	len++;	return len;}RETCODE dbspr1row(DBPROCESS *dbproc, char *buffer, DBINT buf_len){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDSSOCKET * tds;int i,col,collen,namlen,len;char dest[256];int desttype, srctype;int buf_cur=0;RETCODE ret;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	buffer[0]='\0';	if ((ret = dbnextrow(dbproc))!=REG_ROW) 		return ret;	for (col=0;col<resinfo->num_cols;col++)	{		colinfo = resinfo->columns[col];		if (tds_get_null(resinfo->current_row,col)) {			strcpy(dest,"NULL");		} else {			desttype = _db_get_server_type(STRINGBIND);			srctype = tds_get_conversion_type(colinfo->column_type,colinfo->column_size);			dbconvert(dbproc, srctype ,dbdata(dbproc,col+1), -1, desttype, (BYTE *)dest, 255);		}		collen = _get_printable_size(colinfo);		namlen = strlen(colinfo->column_name);		len = collen > namlen ? collen : namlen;		for (i=strlen(dest);i<len;i++)			strcat(dest," ");		if (strlen(dest) + buf_cur < buf_len) {			strcat(buffer,dest);			buf_cur+=strlen(dest);		}		if (strlen(buffer)<buf_len) {			strcat(buffer," ");			buf_cur++;		}	}	if (strlen(buffer)<buf_len) 		strcat(buffer,"\n");	return ret;}RETCODEdbprrow(DBPROCESS *dbproc){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDSSOCKET * tds;int i,col,collen,namlen,len;char dest[256];int desttype, srctype;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	while(dbnextrow(dbproc)==REG_ROW) {		for (col=0;col<resinfo->num_cols;col++)		{			colinfo = resinfo->columns[col];			if (tds_get_null(resinfo->current_row,col)) {				strcpy(dest,"NULL");			} else {				desttype = _db_get_server_type(STRINGBIND);				srctype = tds_get_conversion_type(colinfo->column_type,colinfo->column_size);				dbconvert(dbproc, srctype ,dbdata(dbproc,col+1), -1, desttype, (BYTE *)dest, 255);				/* printf ("some data\t"); */			}			printf("%s",dest);			collen = _get_printable_size(colinfo);			namlen = strlen(colinfo->column_name);			len = collen > namlen ? collen : namlen;			for (i=strlen(dest);i<len;i++)				printf(" ");			printf(" ");		}		printf ("\n");	}	return SUCCEED;}static int _get_printable_size(TDSCOLINFO *colinfo){	switch (colinfo->column_type) {		case SYBINTN:			switch(colinfo->column_size) {				case 1: return 3;				case 2: return 6;				case 4: return 11;			}		case SYBINT1:			return 3;		case SYBINT2:			return 6;		case SYBINT4:        		return 11;		case SYBVARCHAR:		case SYBCHAR:			return colinfo->column_size;		case SYBFLT8:			return 11; /* FIX ME -- we do not track precision */		case SYBREAL:			return 11; /* FIX ME -- we do not track precision */		case SYBMONEY:        		return 12; /* FIX ME */		case SYBMONEY4:        		return 12; /* FIX ME */		case SYBDATETIME:        		return 26; /* FIX ME */		case SYBDATETIME4:        		return 26; /* FIX ME */		case SYBBIT:		case SYBBITN:			return 1;		/* FIX ME -- not all types present */		default:			return 0;	}}RETCODE dbsprline(DBPROCESS *dbproc,char *buffer, DBINT buf_len, DBCHAR line_char){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDSSOCKET * tds;int i,col, len, collen, namlen;char line_str[2],dest[256];int buf_cur=0;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	buffer[0]='\0';	line_str[0]=line_char;	line_str[1]='\0';	for (col=0;col<resinfo->num_cols;col++)	{		dest[0]='\0';		colinfo = resinfo->columns[col];		collen = _get_printable_size(colinfo);		namlen = strlen(colinfo->column_name);		len = collen > namlen ? collen : namlen;		for (i=0;i<len;i++) 			strcat(dest,line_str);		if (strlen(dest)<buf_len-buf_cur) {			strcat(buffer,dest);			buf_cur += strlen(dest);		}		if (strlen(dest)<buf_len-buf_cur) {			strcat(buffer," ");			buf_cur++;		}	}	if (strlen(dest)<buf_len-buf_cur) 		strcat(buffer,"\n");	return SUCCEED;}RETCODE dbsprhead(DBPROCESS *dbproc,char *buffer, DBINT buf_len){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDSSOCKET * tds;int i,col, len, collen, namlen;char dest[256];int buf_cur=0;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	buffer[0]='\0';	for (col=0;col<resinfo->num_cols;col++)	{		colinfo = resinfo->columns[col];		collen = _get_printable_size(colinfo);		namlen = strlen(colinfo->column_name);		len = collen > namlen ? collen : namlen;		strcpy(dest,colinfo->column_name);		for (i=strlen(colinfo->column_name);i<len;i++)			strcat(dest," ");		if (strlen(dest) < buf_len-buf_cur) {			strcat(buffer,dest);			buf_cur += strlen(dest);		}		if (strlen(dest) < buf_len-buf_cur) {			strcat(buffer," ");			buf_cur++;		}	}	if (strlen(dest) < buf_len-buf_cur) 		strcat(buffer,"\n");	return SUCCEED;}void dbprhead(DBPROCESS *dbproc){TDSCOLINFO * colinfo;TDSRESULTINFO * resinfo;TDSSOCKET * tds;int i,col, len, collen, namlen;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	for (col=0;col<resinfo->num_cols;col++)	{		colinfo = resinfo->columns[col];		collen = _get_printable_size(colinfo);		namlen = strlen(colinfo->column_name);		len = collen > namlen ? collen : namlen;		printf("%s",colinfo->column_name);		for (i=strlen(colinfo->column_name);i<len;i++)			printf(" ");		printf(" ");	}	printf ("\n");	for (col=0;col<resinfo->num_cols;col++)	{		colinfo = resinfo->columns[col];		collen = _get_printable_size(colinfo);		namlen = strlen(colinfo->column_name);		len = collen > namlen ? collen : namlen;		for (i=0;i<len;i++)			printf("-");		printf(" ");	}	printf ("\n");}RETCODEdbrows(DBPROCESS *dbproc){TDSRESULTINFO * resinfo;TDSSOCKET * tds;	tds = (TDSSOCKET *) dbproc->tds_socket;	resinfo = tds->res_info;	if (resinfo && resinfo->rows_exist) return SUCCEED;	else return FAIL;}/* STUBS */RETCODE dbsetdeflang(char *language){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbsetdeflang()\n");	return SUCCEED;}int dbgetpacket(DBPROCESS *dbproc){TDSSOCKET *tds = dbproc->tds_socket;	if (!tds || !tds->env) {		return TDS_DEF_BLKSZ;	} else {		return tds->env->block_size;	}}RETCODE dbsetmaxprocs(int maxprocs){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbsetmaxprocs()\n");	return SUCCEED;}RETCODE dbsettime(int seconds){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbsettime()\n");	return SUCCEED;}RETCODE dbsetlogintime(int seconds){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbsetlogintime()\n");	return SUCCEED;}DBBOOL dbhasretstat(DBPROCESS *dbproc){TDSSOCKET *tds = (TDSSOCKET *) dbproc->tds_socket;	if (tds->has_status) {		return TRUE;	} else {		return FALSE;	}}DBINT dbretstatus(DBPROCESS *dbproc){TDSSOCKET *tds = (TDSSOCKET *) dbproc->tds_socket;	return tds->ret_status;}RETCODE dbcmdrow(DBPROCESS *dbproc){        TDSSOCKET *tds = (TDSSOCKET *) dbproc->tds_socket;        if (tds->res_info)                return SUCCEED;        return TDS_FAIL;}int dbaltcolid(DBPROCESS *dbproc, int computeid, int column){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbaltcolid()\n");	return -1;}DBINT dbadlen(DBPROCESS *dbproc,int computeid, int column){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbaddlen()\n");	return 0;}int dbalttype(DBPROCESS *dbproc, int computeid, int column){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbalttype()\n");	return 0;}BYTE *dbadata(DBPROCESS *dbproc, int computeid, int column){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbadata()\n");	return (BYTE*)"";}int dbaltop(DBPROCESS *dbproc, int computeid, int column){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbaltop()\n");	return -1;}RETCODE dbsetopt(DBPROCESS *dbproc, int option, char *char_param, int int_param){   switch (option) {      case DBBUFFER:      {         /* XXX should be more robust than just a atoi() */         buffer_set_buffering(&(dbproc->row_buf), atoi(char_param));         break;      }      default:      {         break;      }   }   return SUCCEED;}voiddbsetinterrupt(DBPROCESS *dbproc, int (*ckintr)(),int (*hndlintr)()){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbsetinterrupt()\n");}int dbnumrets(DBPROCESS *dbproc){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbnumrets()\n");	return 0;}char *dbretname(DBPROCESS *dbproc, int retnum){	tdsdump_log (TDS_DBG_FUNC, "%L UNIMPLEMENTED dbretname()\n");	return NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -