📄 sqlsetx.cpp
字号:
}
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 + -