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

📄 dlodbc.cpp

📁 用于处理证书请求,生成证书的CA服务器源码,
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			SQLSMALLINT len;
			SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);


		}
	} catch (...) {
	}
	return -1;
}

SQLSMALLINT GetColumnCount(SQLHSTMT statement) {

	SQLRETURN re;
	SQLSMALLINT cols;

	try {
		re = SQLNumResultCols(statement,&cols);
		if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO) {
	    	return cols;  
		} else {
            SQLCHAR sql[255];
            SQLINTEGER err;
            SQLCHAR mes[255];
			memset (mes, '\0', 10);
			memset (sql, '\0', 10);
			SQLSMALLINT len;
			SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);


		}
	} catch (...) {
	}
	return -1;
}

int NextCursor(SQLHSTMT statement) {

	SQLRETURN re;
	try {
		re = SQLFetchScroll(statement,(SQLSMALLINT)SQL_FETCH_NEXT,0);
		if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO){
			return 1;
		} 
	} catch (...) {
	}
	return -1;
}

SQLCHAR* getData(SQLHSTMT statement, int index, long &s_len) {
	
	try {
		SQLRETURN re;
		SQLSMALLINT type = SQL_C_CHAR;
		SQLINTEGER buf_len=0;
		SQLINTEGER str_len=0;
		SQLDOUBLE buf = .0;
		//SQLPOINTER pbuf = NULL;
        SQL_DATE_STRUCT* pbuf = NULL;
		SQL_TIME_STRUCT* pbuf2 = NULL;
		SQL_TIMESTAMP_STRUCT* pbuf3 = NULL;
		SQLINTEGER pbuf4 = 0;
		SQLCHAR pbuf5 = 0;
		SQLCHAR* p=NULL; 

        SQLINTEGER result = 0;
		re = SQLColAttribute(statement,index,2,NULL,0,NULL,(void*)(&result));


		switch (result) {
		    case -7:
		        re = SQLGetData(statement, (SQLUSMALLINT)index, SQL_C_BIT, (void*)(&pbuf5), 0, &str_len);
				p = new SQLCHAR[1];
				if (str_len==SQL_NULL_DATA) {
                    p[0] = '*';
				} else {
					if (pbuf5) {
					    p[0] = '1';
					} else {
						p[0] = '0';
					}
				}
				s_len = 1;
				break;
	      	case -6:
		    case 4:		 
			case 5:
		        re = SQLGetData(statement,(SQLUSMALLINT)index,SQL_C_SLONG,(void*)(&pbuf4),0,&str_len);
                if (str_len==SQL_NULL_DATA) {
					p = new SQLCHAR[1];
					p[0] = '*';
					s_len = 1;
				} else {
				    p = new SQLCHAR[10];
				    memset((char*)p, '\0', 10);
                   itoa ((int)pbuf4, (char*)p, 10 );
				    s_len = strlen((char*)p);
				}
                break;
		    case 6:
			case 8:
			case 7:		        
		        re = SQLGetData(statement,(SQLUSMALLINT)index,SQL_C_DOUBLE,(void*)(&buf),0,&str_len);
     			if (str_len == SQL_NULL_DATA) {
				    p = new SQLCHAR[1];
				    p[0] = '*';
				    s_len = 1;
				} else {
	    	        p = new SQLCHAR[str_len];
			        memset(p,'\0',str_len);
			        sprintf((char*)p, "%g", buf);
				    s_len = strlen((char*)p);
				}
				break;
			case 91: 
				pbuf = new SQL_DATE_STRUCT;
				buf_len = sizeof (SQL_DATE_STRUCT);

                re = SQLGetData(statement, (SQLUSMALLINT)index, SQL_C_TYPE_DATE, (void*)pbuf, buf_len, &str_len);
				if (str_len==SQL_NULL_DATA) {
					p = new SQLCHAR[1];
					p[0] = '*';
					s_len = 1;
				} else {
					char year_char[10];
					char month_char[10];
					char day_char[10];
					memset(year_char, '\0', 10);
					memset(month_char, '\0', 10);
					memset(day_char, '\0', 10);
					itoa( (int)pbuf->year, year_char, 10 ); 
					itoa( (int)pbuf->month, month_char, 10 ); 
					itoa( (int)pbuf->day, day_char, 10 ); 

					int len_year = strlen(year_char);
					int len_month = strlen(month_char);
					int len_day = strlen(day_char);

                    p = new SQLCHAR[len_year+len_month+len_day+2];
					int k;
					for (k=0; k<len_year; k++) p[k] = year_char[k];
					p[len_year] = ',';
					for (k=len_year+1; k<len_year+1+len_month; k++) p[k] = month_char[k-len_year-1];
					p[len_year+1+len_month] = ',';
					for (k=len_year+1+len_month+1; k<len_year+1+len_month+1+len_day; k++) p[k] = day_char[k-len_year-1-len_month-1];
					s_len = len_year+len_month+len_day+2;
				}
				delete pbuf;
				break;
			case 92:
				pbuf2 = new SQL_TIME_STRUCT;
				buf_len = sizeof (SQL_TIME_STRUCT);

				re = SQLGetData(statement, (SQLUSMALLINT)index, SQL_C_TYPE_TIME, (void*)pbuf2, buf_len, &str_len);
				if (str_len==SQL_NULL_DATA) {
					p = new SQLCHAR[1];
					p[0] = '*';
					s_len = 1;
				} else {
					char hour_char[10];
					char minute_char[10];
					char second_char[10];
					memset(hour_char, '\0', 10);
					memset(minute_char, '\0', 10);
					memset(second_char, '\0', 10);
					itoa( (int)pbuf2->hour, hour_char, 10 ); 
					itoa( (int)pbuf2->minute, minute_char, 10 ); 
					itoa( (int)pbuf2->second, second_char, 10 ); 

					int len_hour= strlen(hour_char);
					int len_minute = strlen(minute_char);
					int len_second = strlen(second_char);

					p = new SQLCHAR[len_hour+len_minute+len_second+2];
					int k;
					for (k=0; k<len_hour; k++) p[k] = hour_char[k];
					p[len_hour] = ',';
					for (k=len_hour+1; k<len_hour+1+len_minute; k++) p[k] = minute_char[k-len_hour-1];
					p[len_hour+1+len_minute] = ',';
					for (k=len_hour+1+len_minute+1; k<len_hour+1+len_minute+1+len_second; k++) p[k] = second_char[k-len_hour-1-len_minute-1];

					s_len = len_hour+len_minute+len_second+2;
				}
				delete pbuf2;
				break;
			case 93:
				pbuf3 = new SQL_TIMESTAMP_STRUCT;
				buf_len = sizeof (SQL_TIMESTAMP_STRUCT);

				re = SQLGetData(statement, (SQLUSMALLINT)index, SQL_C_TYPE_TIMESTAMP, (void*)pbuf3, buf_len, &str_len);
				if (str_len==SQL_NULL_DATA) {
					p = new SQLCHAR[1];
					p[0] = '*';
					s_len = 1;
				} else {
					char year_char[10];
					char month_char[10];
					char day_char[10];
					memset(year_char, '\0', 10);
					memset(month_char, '\0', 10);
					memset(day_char, '\0', 10);
					itoa( (int)pbuf3->year, year_char, 10 ); 
					itoa( (int)pbuf3->month, month_char, 10 ); 
					itoa( (int)pbuf3->day, day_char, 10 ); 

					char hour_char[10];
					char minute_char[10];
					char second_char[10];
					char fraction_char[10];
					memset(hour_char, '\0', 10);
					memset(minute_char, '\0', 10);
					memset(second_char, '\0', 10);
					memset(fraction_char, '\0', 10);
					itoa( (int)pbuf3->hour, hour_char, 10 ); 
					itoa( (int)pbuf3->minute, minute_char, 10 ); 
					itoa( (int)pbuf3->second, second_char, 10 ); 
					itoa( (int)pbuf3->fraction, fraction_char, 10 ); 
					int len_year = strlen(year_char);
					int len_month = strlen(month_char);
					int len_day = strlen(day_char);
					int len_hour= strlen(hour_char);
					int len_minute = strlen(minute_char);
					int len_second = strlen(second_char);
					int len_fraction = strlen(fraction_char);

					p = new SQLCHAR[len_year+len_month+len_day+len_hour+len_minute+len_second+len_fraction+6];

					int k;
					for (k=0; k<len_year; k++) p[k] = year_char[k];
					p[len_year] = ',';
					for (k=len_year+1; k<len_year+1+len_month; k++) p[k] = month_char[k-len_year-1];
					p[len_year+1+len_month] = ',';
					for (k=len_year+1+len_month+1; k<len_year+1+len_month+1+len_day; k++) p[k] = day_char[k-len_year-1-len_month-1];
                    p[len_year+1+len_month+1+len_day] = ',';
					for (k=len_year+1+len_month+1+len_day+1; k<len_year+1+len_month+1+len_day+1+len_hour; k++) p[k] = hour_char[k-len_year-1-len_month-1-len_day-1];
					p[len_year+1+len_month+1+len_day+1+len_hour] = ',';
					for (k=len_year+1+len_month+1+len_day+1+len_hour+1; k<len_year+1+len_month+1+len_day+1+len_hour+1+len_minute; k++) p[k] = minute_char[k-len_year-1-len_month-1-len_day-1-len_hour-1];
					p[len_year+1+len_month+1+len_day+1+len_hour+1+len_minute] = ',';
					for (k=len_year+1+len_month+1+len_day+1+len_hour+1+len_minute+1; k<len_year+1+len_month+1+len_day+1+len_hour+1+len_minute+1+len_second; k++) p[k] = second_char[k-len_year-1-len_month-1-len_day-1-len_hour-1-len_minute-1];
					p[len_year+1+len_month+1+len_day+1+len_hour+1+len_minute+1+len_second] = ',';
					for (k=len_year+1+len_month+1+len_day+1+len_hour+1+len_minute+1+len_second+1; k<len_year+1+len_month+1+len_day+1+len_hour+1+len_minute+1+len_second+1+len_fraction; k++) p[k] = fraction_char[k-len_year-1-len_month-1-len_day-1-len_hour-1-len_minute-1-len_second-1];

					s_len = len_year+len_month+len_day+len_hour+len_minute+len_second+len_fraction+6;
				}
				delete pbuf3;
				break;
			default:
		        re = SQLColAttribute(statement, (SQLUSMALLINT)index, SQL_DESC_LENGTH, NULL, 0, NULL, (void*)(&buf_len));

		        buf_len++;
		        p = new SQLCHAR[buf_len];
		        memset(p,'\0',buf_len);
			    s_len = buf_len - 1;

                re = SQLGetData(statement, (SQLUSMALLINT)index, SQL_C_CHAR, (void*)p, buf_len, &str_len);
				if (str_len==SQL_NULL_DATA) {
					p[0] = '\0';
					s_len = 0;
				} else {
					s_len = str_len;
				}
		}

		if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO){
			return p;
		} else {
            SQLCHAR sql[255];
            SQLINTEGER err;
            SQLCHAR mes[255];
			memset (mes, '\0', 10);
			memset (sql, '\0', 10);
			SQLSMALLINT len;
			SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);


		}
	} catch (...) {
	}
	return NULL;
}

int GetMoreResults(SQLHSTMT statement) {

	try {
		SQLRETURN re;
		re = SQLMoreResults(statement);
		if (re==SQL_SUCCESS||re==SQL_SUCCESS_WITH_INFO) {
			return 1;
		}
	} catch (...) {
	}
	return -1;
}

int GetColumnAttribute(SQLUSMALLINT type, SQLHSTMT statement,int index, SQLCHAR buf[], SQLSMALLINT len, SQLSMALLINT &str_len) {
	memset(buf,'\0',len);
	try {
		SQLRETURN re;
		SQLINTEGER iresult;
        SQLINTEGER result = 0;

		if (type == 2 || type == 6
			|| type == 1005 || type == 1006
			|| type == 11 || type == 12
			|| type == 10 || type == 1008
			|| type == 13 || type == 8) {
		  re = SQLColAttribute(statement,index,type,NULL,0,NULL,(void*)(&result));
	      SQLCHAR* ft;
		  ft = buf;
		  ltoa(result,(char*)ft,10);
		} else {
		  re = SQLColAttribute(statement,(SQLUSMALLINT)index,type,(void*)buf,len,&str_len,(void*)(&iresult));
		}
		if (re==SQL_SUCCESS||re==SQL_SUCCESS_WITH_INFO) {
			return 1;
		} else {
            SQLCHAR sql[255];
            SQLINTEGER err;
            SQLCHAR mes[255];
			memset (mes, '\0', 10);
			memset (sql, '\0', 10);
			SQLSMALLINT len;
			SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);

		}
	} catch (...) {
	}
	return -1;
}
		
SQLINTEGER GetRowCount(SQLHSTMT statement) {
	SQLRETURN re;
	SQLINTEGER result;
	try {
		re = SQLRowCount(statement,&result);
		if (re == SQL_SUCCESS || re == SQL_SUCCESS_WITH_INFO) {
			return result;
		} else {
            SQLCHAR sql[255];
            SQLINTEGER err;
            SQLCHAR mes[255];
			memset (mes, '\0', 10);
			memset (sql, '\0', 10);
			SQLSMALLINT len;
			SQLGetDiagRec(SQL_HANDLE_STMT, statement, 1, sql, &err, mes, 255, &len);

		}
	} catch (...) {
	}
	return -1;
}


int GetDataMeta(SQLHDBC connection,SQLUSMALLINT infotype,SQLCHAR buf[],int len,SQLSMALLINT &str_len) {
	memset(buf,'\0',len);
	SQLRETURN re;
    SQLUINTEGER value = 0;
	try {
		if (infotype == 49 || infotype == 50 || infotype == 51
			|| infotype == 52 || infotype == 86 || infotype == 48
			|| (infotype>=53 && infotype<=71) || infotype == 115
			|| infotype==91 || infotype==92 || infotype==80
			|| infotype==112 || infotype==108 || infotype==0
			|| infotype==101 || infotype==100 || infotype==97
		    || infotype==98 || infotype==99 || infotype==74 
			|| infotype==88 || infotype == 75 || infotype==118
	    	|| infotype==114|| infotype==95 || infotype==96 
			|| infotype==23 || infotype==24  || infotype==30
			|| infotype==22 || infotype==93 || infotype==28
			|| infotype==84 || infotype==85 || infotype==31
			|| infotype==102 || infotype==32 || infotype==33
			|| infotype==34 || infotype==104 || infotype==103
			|| infotype==105 || infotype==1 || infotype==35
			|| infotype==106 || infotype==107 || infotype==26
			|| infotype==46 || infotype==72 || infotype==44
			|| infotype==147 || infotype==168 || infotype==145
			|| infotype==121) {

⌨️ 快捷键说明

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