Exemplo n.º 1
0
void 
StorageHomeBaseImpl::ValuePaser( std::map<std::string, CORBA::Any>& valueMap )
{
	int nType, nLen;
	unsigned char szColName[256];

	unsigned char szData[1024]; // SQL_CHAR or SQL_VARCHAR -> SQL_C_CHAR; SQL_BINARY -> SQL_C_BINARY
	unsigned char ucData; // SQL_BIT -> SQL_C_BIT
	char cData; // SQL_TINYINT -> SQL_C_TINYINT				
	short siData; // SQL_SMALLINT -> SQL_C_SHORT				
	long lData; // SQL_INTEGER -> SQL_C_LONG				
	float fData; // SQL_REAL -> SQL_C_FLOAT
	double dData; // SQL_DOUBLE or SQL_FLOAT -> SQL_C_DOUBLE
	//struct tm* strctData = new struct tm(); // SQL_TYPE_TIMESTAMP -> SQL_C_TYPE_TIMESTAMP(3.x); SQL_TIMESTAMP -> SQL_C_TIMESTAMP(2.x)
	
	for(int iCol=0; iCol<GetFieldCount(); iCol++)
	{
		std::string strColName;
		CORBA::Any anyData;

		memset(szColName, '\0', 256);
		GetFieldAttributes(iCol, szColName, nType, nLen);
		strColName = (char*)szColName;
		
		switch(nType)
		{
			case SQL_CHAR: // also for CORBA::Boolean
			case SQL_VARCHAR:
				memset(szData, '\0', 1024);
				GetFieldValue(iCol, szData);
				anyData <<= (const char*)szData;
				break;
			case SQL_BIT:
				GetFieldValue(iCol, &ucData);
				anyData <<= CORBA::Any::from_octet(ucData);
				break;
			case SQL_TINYINT:
				GetFieldValue(iCol, cData);
				anyData <<= CORBA::Any::from_char(cData);
				break;
			case SQL_SMALLINT:
				GetFieldValue(iCol, &siData);
				anyData <<= (CORBA::Short)siData;
				break;
			case SQL_INTEGER:
				GetFieldValue(iCol, &lData);
				anyData <<= (CORBA::Long)lData;
				break;
			case SQL_REAL:
				GetFieldValue(iCol, &fData);
				anyData <<= (CORBA::Float)fData;
				break;
			case SQL_DOUBLE:
			case SQL_FLOAT:
				GetFieldValue(iCol, &dData);
				anyData <<= (CORBA::Double)dData;
				break;
			//case SQL_TYPE_TIMESTAMP:
			//case SQL_TIMESTAMP:
			//	GetFieldValue(iCol, strctData);
			//	anyData <<= (CORBA::StructDef)strctData;
			//	break;
			//case SQL_NUMERIC:
			//case SQL_DECIMAL:
			//	GetFieldValue(iCol, fltIncome);
			//	break;
			default:
				assert("This data type is unknown!");
				break;
		}

		valueMap[strColName] = anyData;
	}
}
Exemplo n.º 2
0
BOOL CODBCRecordset::GetFieldName(int nField, CHAR *szFieldName)
{
	int nType, nLength;

	return GetFieldAttributes(nField, szFieldName, nType, nLength);
}