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

📄 sqlsetx.cpp

📁 读取oracle的blob数据. 数据库连接以ODBC连接.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	}
	
	int nc=to_user_Get_data(i, bit, m_Width[i]);

	bit[min(nc,(int)m_Width[i])]=0;

	strcpy(opChar, bit);

	return TRUE;
}
BOOL CSQLSetX::to_user_CharDec(int i)
{
	char *opChar = (char*)m_fld_ptr[i];

	if (StrLen_or_IndPtr[i]==SQL_NULL_DATA)
	{
		//应该置缺省值
		opChar[0]=0;
		return TRUE;
	}
	
	int nc=to_user_Get_data(i, bit, m_Width[i]);

	bit[min(nc,(int)m_Width[i])]=0;
	double a = atof(bit);
	sprintf(bit, "%f",a); trim0(bit);

	strcpy(opChar, bit);

	return TRUE;
}

BOOL CSQLSetX::to_user_String(int i)
{
	CString *opString = (CString*)m_fld_ptr[i];

	if (StrLen_or_IndPtr[i]==SQL_NULL_DATA)
	{
		//应该置缺省值
		*opString = "";
		return TRUE;
	}

	cbData = to_user_Get_data(i, bit, m_Width[i]);

	bit[min(cbData,(int)m_Width[i])]=0;

	*opString = bit;

	return TRUE;
}

BOOL CSQLSetX::to_user_ByteArray(int i)
{
	CMyByteArray *opByteArray = (CMyByteArray*)m_fld_ptr[i];
	if (StrLen_or_IndPtr[i]==SQL_NULL_DATA)
	{
		opByteArray->SetDataSize(0);
		return TRUE;
	}

	CMyByteArray *ipByteArray;
	int nb;

	switch (m_Type[i])
	{
		case	SQL_BINARY:
		case	SQL_VARBINARY:
		case	SQL_LONGVARCHAR:
		case	SQL_LONGVARBINARY:
		case	SQL_ORA_LOB:
		case    SQL_SQL_NTEXT:
			ipByteArray = (CMyByteArray*)m_Value[i];
			cbData = to_user_Get_data(i, NULL, 0);
			
			opByteArray->SetDataSize(cbData);
			memcpy((char *)opByteArray->GetData(),(char *)ipByteArray->GetData(),cbData);

			return TRUE;
			break;
		default:
			nb = 4096;
	}

	cbData = to_user_Get_data(i, bit, nb);
	opByteArray->SetDataSize(cbData);
	memcpy((char *)opByteArray->GetData(), bit,cbData);
	return TRUE;

}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CSQLSetX::dummy_to_Bool(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		*((BOOL *)m_Value[i]) = 0;	//应该置缺省值
	}
	return TRUE;
}


BOOL CSQLSetX::dummy_to_Byte(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		*((BYTE *)m_Value[i])=0;	//应该置缺省值
	}
	return TRUE;
}


BOOL CSQLSetX::dummy_to_Short(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		*((short *)m_Value[i])=0;	//应该置缺省值
	}
	return TRUE;
}

BOOL CSQLSetX::dummy_to_Long(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		*( (long *)m_Value[i])=0;	//应该置缺省值
	}
	return TRUE;
}


BOOL CSQLSetX::dummy_to_Float(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		*((float *)m_Value[i]) = 0;	//应该置缺省值
	}
	return TRUE;
}



BOOL CSQLSetX::dummy_to_Double(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		*((double *)m_Value[i]) = 0;	//应该置缺省值
	}
	return TRUE;
}

BOOL CSQLSetX::dummy_to_Date(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		//应该置缺省值
		CTime t=CTime::GetCurrentTime();

		((DATE_STRUCT *)m_Value[i])->year = t.GetYear();
		((DATE_STRUCT *)m_Value[i])->month= t.GetMonth();
		((DATE_STRUCT *)m_Value[i])->day  = t.GetDay();
	}
	return TRUE;
}
BOOL CSQLSetX::dummy_to_Time(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		//应该置缺省值
		((TIME_STRUCT *)m_Value[i])->hour  = 0;
		((TIME_STRUCT *)m_Value[i])->minute= 0;
		((TIME_STRUCT *)m_Value[i])->second= 0;
	}
	return TRUE;
}
BOOL CSQLSetX::dummy_to_TimeStamp(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		//应该置缺省值
		CTime t=CTime::GetCurrentTime();

		((TIMESTAMP_STRUCT *)m_Value[i])->day = t.GetDay();
		((TIMESTAMP_STRUCT *)m_Value[i])->month=t.GetMonth();
		((TIMESTAMP_STRUCT *)m_Value[i])->year =t.GetYear();
		((TIMESTAMP_STRUCT *)m_Value[i])->hour  = t.GetHour();
		((TIMESTAMP_STRUCT *)m_Value[i])->minute= t.GetMinute();
		((TIMESTAMP_STRUCT *)m_Value[i])->second  = 0;
		((TIMESTAMP_STRUCT *)m_Value[i])->fraction = 0;
	}
	return TRUE;
}


BOOL CSQLSetX::dummy_to_Char(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		//应该置缺省值
		((char *)m_Value[i])[0]=' ';
		((char *)m_Value[i])[1]=0;
	}
	return TRUE;
}

BOOL CSQLSetX::dummy_to_String(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		//应该置缺省值
		char *obit = (char*)(const char*)(*(CString *)m_Value[i]);
		memset(obit, ' ', (*(CString *)m_Value[i]).GetLength() );
	}
	return TRUE;
}


BOOL CSQLSetX::dummy_to_ByteArray(int i)
{
	if (Nullable[i]==SQL_NULLABLE)
	{
		inLen[i+1] = SQL_NULL_DATA;
	}
	else
	{
		//应该置缺省值
		(*(CMyByteArray*)m_Value[i]).SetDataSize(0);
	}
	return TRUE;
}




BOOL CSQLSetX::To_Bool(int i)
{
	BOOL *ip = (BOOL*)m_Value[i];
	void *op = (void*)m_fld_ptr[i];
	char *obit;

	switch (m_fld_c_type[i])
	{
		case	SQL_BIT:		*ip = (BOOL)*(BOOL   *)op;	break;
		case	SQL_TINYINT:	*ip = (BOOL)*(BYTE   *)op;	break;
		case	SQL_SMALLINT:	*ip = (BOOL)*(short  *)op;	break;
		case	SQL_INTEGER:	*ip = (BOOL)*(long   *)op;	break;
		case	SQL_REAL:		*ip = (BOOL)*(float  *)op; break;

		case	SQL_FLOAT:
		case	SQL_DOUBLE:		*ip = (BOOL)*(double *)op; break;
		
		case	SQL_DATE:		*ip = *((BOOL*)(DATE_STRUCT      *)op);	break;
		case	SQL_TIME:		*ip = *((BOOL*)(TIME_STRUCT      *)op);	break;
		case	SQL_TIMESTAMP:	*ip = *((BOOL*)(TIMESTAMP_STRUCT *)op);  break;

		case	SQL_GUID:
		case    SQL_SQL_NCHAR:
		case    SQL_SQL_NVARCHAR:
		case	SQL_CHAR:
		case	SQL_DECIMAL:
		case	SQL_NUMERIC:	*ip = (BOOL)atol((char*)op);break;
		case	SQL_VARCHAR:
				*ip = atol((char *)(const char*)(*(CString *)op));
				 break;

		case    SQL_SQL_NTEXT:
		case	SQL_BINARY:
		case	SQL_VARBINARY:
		case	SQL_LONGVARCHAR:
		case	SQL_LONGVARBINARY:
		case	SQL_ORA_LOB:
			obit = (char*)(*(CMyByteArray*)op).GetData();
			*ip = *(BOOL*)obit;
			break;

		default:
			break;
	}
	return TRUE;
}


BOOL CSQLSetX::To_Byte(int i)
{
	BYTE *ip = (BYTE*)m_Value[i];
	void *op = (void*)m_fld_ptr[i];
	char *obit;

	switch (m_fld_c_type[i])
	{
		case	SQL_BIT:		*ip = (BYTE)*(BOOL   *)op;	break;
		case	SQL_TINYINT:	*ip = (BYTE)*(BYTE   *)op;	break;
		case	SQL_SMALLINT:	*ip = (BYTE)*(short  *)op;	break;
		case	SQL_INTEGER:	*ip = (BYTE)*(long   *)op;	break;
		case	SQL_REAL:		*ip = (BYTE)*(float  *)op; break;

		case	SQL_FLOAT:
		case	SQL_DOUBLE:		*ip = (BYTE)*(double *)op; break;
		
		case	SQL_DATE:		*ip = *((BYTE*)(DATE_STRUCT      *)op);	break;
		case	SQL_TIME:		*ip = *((BYTE*)(TIME_STRUCT      *)op);	break;
		case	SQL_TIMESTAMP:	*ip = *((BYTE*)(TIMESTAMP_STRUCT *)op);  break;

		case    SQL_SQL_NCHAR:
		case	SQL_CHAR:
		case	SQL_DECIMAL:
		case	SQL_NUMERIC:	*ip = (BYTE)*(char*)op;break;

		case	SQL_GUID:
		case    SQL_SQL_NVARCHAR:
		case	SQL_VARCHAR:
				*ip = *(char *)(const char*)(*(CString *)op);
				 break;

		case    SQL_SQL_NTEXT:
		case	SQL_BINARY:
		case	SQL_VARBINARY:
		case	SQL_LONGVARCHAR:
		case	SQL_LONGVARBINARY:
		case	SQL_ORA_LOB:
			obit = (char*)(*(CMyByteArray*)op).GetData();
			*ip = *(BYTE*)obit;
			break;

		default:
			break;
	}
	return TRUE;

}

BOOL CSQLSetX::To_Short(int i)
{	
	short *ip = (short*)m_Value[i];
	void *op = (void*)m_fld_ptr[i];
	char *obit;

	switch (m_fld_c_type[i])
	{
		case	SQL_BIT:		*ip = (short)*(BOOL   *)op;	break;
		case	SQL_TINYINT:	*ip = (short)*(BYTE   *)op;	break;
		case	SQL_SMALLINT:	*ip = (short)*(short  *)op;	break;
		case	SQL_INTEGER:	*ip = (short)*(long   *)op;	break;
		case	SQL_REAL:		*ip = (short)*(float  *)op; break;

		case	SQL_FLOAT:
		case	SQL_DOUBLE:		*ip = (short)*(double *)op; break;
		
		case	SQL_DATE:		*ip = *((short*)(DATE_STRUCT      *)op);	break;
		case	SQL_TIME:		*ip = *((short*)(TIME_STRUCT      *)op);	break;
		case	SQL_TIMESTAMP:	*ip = *((short*)(TIMESTAMP_STRUCT *)op);  break;

		case    SQL_SQL_NCHAR:
		case	SQL_CHAR:
		case	SQL_DECIMAL:
		case	SQL_NUMERIC:	*ip = (short)atol((char*)op);break;

		case	SQL_GUID:
		case    SQL_SQL_NVARCHAR:
		case	SQL_VARCHAR:
				*ip = (short)atol((char *)(const char*)(*(CString *)op));
				 break;

		case    SQL_SQL_NTEXT:
		case	SQL_BINARY:
		case	SQL_VARBINARY:
		case	SQL_LONGVARCHAR:
		case	SQL_LONGVARBINARY:
		case	SQL_ORA_LOB:
			obit = (char*)(*(CMyByteArray*)op).GetData();
			*ip = *(short*)obit;
			break;

		default:
			break;
	}
	return TRUE;
}
BOOL CSQLSetX::To_Long(int i)
{
	long *ip = (long*)m_Value[i];
	void *op = (void*)m_fld_ptr[i];
	char *obit;

	switch (m_fld_c_type[i])
	{
		case	SQL_BIT:		*ip = (long)*(BOOL   *)op;	break;
		case	SQL_TINYINT:	*ip = (long)*(BYTE   *)op;	break;
		case	SQL_SMALLINT:	*ip = (long)*(short  *)op;	break;
		case	SQL_INTEGER:	*ip = (long)*(long   *)op;	break;
		case	SQL_REAL:		*ip = (long)*(float  *)op; break;

		case	SQL_FLOAT:
		case	SQL_DOUBLE:		*ip = (long)*(double *)op; break;
		
		case	SQL_DATE:		*ip = *((long*)(DATE_STRUCT      *)op);	break;
		case	SQL_TIME:		*ip = *((long*)(TIME_STRUCT      *)op);	break;
		case	SQL_TIMESTAMP:	*ip = *((long*)(TIMESTAMP_STRUCT *)op);  break;

		case    SQL_SQL_NCHAR:
		case	SQL_CHAR:
		case	SQL_DECIMAL:
		case	SQL_NUMERIC:	*ip = (long)atol((char*)op);break;

		case	SQL_GUID:
		case    SQL_SQL_NVARCHAR:
		case	SQL_VARCHAR:
				*ip = atol((char *)(const char*)(*(CString *)op));
				 break;

		case    SQL_SQL_NTEXT:
		case	SQL_BINARY:
		case	SQL_VARBINARY:
		case	SQL_LONGVARCHAR:
		case	SQL_LONGVARBINARY:
		case	SQL_ORA_LOB:
			obit = (char*)(*(CMyByteArray*)op).GetData();
			*ip = *(long*)obit;
			break;

		default:
			break;
	}
	return TRUE;
}
BOOL CSQLSetX::To_Float(int i)
{
	float *ip = (float*)m_Value[i];
	void *op = (void*)m_fld_ptr[i];
	char *obit;

	switch (m_fld_c_type[i])
	{
		case	SQL_BIT:		*ip = (float)*(BOOL   *)op;	break;
		case	SQL_TINYINT:	*ip = (float)*(BYTE   *)op;	break;
		case	SQL_SMALLINT:	*ip = (float)*(short  *)op;	break;
		case	SQL_INTEGER:	*ip = (float)*(long   *)op;	break;
		case	SQL_REAL:		*ip = (float)*(float  *)op; break;

		case	SQL_FLOAT:
		case	SQL_DOUBLE:		*ip = (float)*(double *)op; break;
		
		case	SQL_DATE:		*ip = *((float*)(DATE_STRUCT      *)op);	break;
		case	SQL_TIME:		*ip = *((float*)(TIME_STRUCT      *)op);	break;
		case	SQL_TIMESTAMP:	*ip = *((float*)(TIMESTAMP_STRUCT *)op);  break;

		case    SQL_SQL_NCHAR:
		case	SQL_CHAR:
		case	SQL_DECIMAL:
		case	SQL_NUMERIC:	*ip = (float)atol((char*)op);break;

		case	SQL_GUID:
		case    SQL_SQL_NVARCHAR:
		case	SQL_VARCHAR:
				*ip = (float)atof((char *)(const char*)(*(CString *)op));
				 break;

		case    SQL_SQL_NTEXT:
		case	SQL_BINARY:
		case	SQL_VARBINARY:
		case	SQL_LONGVARCHAR:
		case	SQL_LONGVARBINARY:
		case	SQL_ORA_LOB:
			obit = (char*)(*(CMyByteArray*)op).GetData();
			*ip = *(float*)obit;
			break;

		default:
			break;
	}
	return TRUE;

}
BOOL CSQLSetX::To_Double(int i)
{
	double *ip = (double*)m_Value[i];
	void *op = (void*)m_fld_ptr[i];
	char *obit;

	switch (m_fld_c_type[i])
	{
		case	SQL_BIT:		*ip = (double)*(BOOL   *)op;	break;
		case	SQL_TINYINT:	*ip = (double)*(BYTE   *)op;	break;
		case	SQL_SMALLINT:	*ip = (double)*(short  *)op;	break;
		case	SQL_INTEGER:	*ip = (double)*(long   *)op;	break;
		case	SQL_REAL:		*ip = (double)*(float  *)op; break;

		case	SQL_FLOAT:
		case	SQL_DOUBLE:		*ip = (double)*(double *)op; break;
		
		case	SQL_DATE:		*ip = *((double*)(DATE_STRUCT      *)op);	break;
		case	SQL_TIME:		*ip = *((double*)(TIME_STRUCT      *)op);	break;
		case	SQL_TIMESTAMP:	*ip = *((double*)(TIMESTAMP_STRUCT *)op);  break;

		case    SQL_SQL_NCHAR:
		case	SQL_CHAR:
		case	SQL_DECIMAL:
		case	SQL_NUMERIC:	*ip = (double)atol((char*)op);break;

		case	SQL_GUID:
		case    SQL_SQL_NVARCHAR:
		case	SQL_VARCHAR:
				*ip = atof((char *)(const char*)(*(CString *)op));
				 break;

		case    SQL_SQL_NTEXT:
		case	SQL_BINARY:
		case	SQL_VARBINARY:
		case	SQL_LONGVARCHAR:
		case	SQL_LONGVARBINARY:
		case	SQL_ORA_LOB:
			obit = (char*)(*(CMyByteArray*)op).GetData();
			*ip = *(double*)obit;
			break;

		default:
			break;
	}
	return TRUE;
}

SDWORD CSQLSetX::To_Get_data(int i, char *obit, int nbyte)
{
	void *op = (void*)m_fld_ptr[i];
	if (nullField[i])
	{
		obit[0]=0;
		return 0;
	}
	switch (m_fld_c_type[i])
	{
		case	SQL_BIT:
			cbData = sprintf(obit,"%d",((*(BOOL *)op)&0x00ff));
			break;

		case	SQL_TINYINT:
			cbData = sprintf(obit,"%d", ((*(BYTE *)op)&0x00ff));	
			break;

		case	SQL_SMALLINT:
			cbData = sprintf(obit,"%d", ((*(short *)op)&0xffff));	
			break;

		case	SQL_INTEGER:
			cbData = sprintf(obit,"%d", *(long *)op);	
			break;

		case	SQL_REAL:
			cbData = sprintf(obit,"%.5f", *(float *)op);	
			break;

		case	SQL

⌨️ 快捷键说明

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