Modified:
MYSQLPlus/MYSQLPlusLib/MResult.cpp
Log:
Modified: MYSQLPlus/MYSQLPlusLib/MResult.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MResult.cpp 2006-05-17 06:34:20 UTC (rev 249)
+++ MYSQLPlus/MYSQLPlusLib/MResult.cpp 2006-05-17 06:55:08 UTC (rev 250)
@@ -102,30 +102,37 @@
{
MYODBCDbgEnter();
+ /* validate column number */
+ if ( nColumnNumber > getImpRowDesc()->getCount() )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07009 ) );
+
+ MResultDataTarget dataTarget;
+ dataTarget.nBytesOrCharsMax = nBufferLength;
+ dataTarget.nColumn = nColumnNumber;
+ dataTarget.nTargetType = nTargetType;
+ dataTarget.pnBytesOrCharsRemaining = pnLength;
+ dataTarget.pnIndicator = pnIndicator;
+ dataTarget.pTarget = pTargetValue;
+
/* get our col data from current row (as variant) */
- QVariant variantData;
- SQLRETURN nReturn = getData( nColumnNumber, variantData );
+ SQLRETURN nReturn = getData( nColumnNumber, dataTarget.variantData );
if ( !SQL_SUCCEEDED(nReturn) )
MYODBCDbgReturn( nReturn );
/* get indicator value; no need to process further if we are null */
- if ( variantData.isNull() )
+ if ( dataTarget.variantData.isNull() )
{
- if ( pnIndicator )
+ if ( dataTarget.pnIndicator )
{
- *pnIndicator = SQL_NULL_DATA;
+ *dataTarget.pnIndicator = SQL_NULL_DATA;
MYODBCDbgReturn( SQL_SUCCESS );
}
else
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_22002 ) );
}
- if ( pnIndicator ) *pnIndicator = 0;
+ if ( dataTarget.pnIndicator ) *dataTarget.pnIndicator = 0;
- /* validate column number */
- if ( nColumnNumber > getImpRowDesc()->getCount() )
- MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07009 ) );
-
/* get data and data length, convert data as needed */
switch ( nTargetType )
{
@@ -204,61 +211,63 @@
case SQL_C_DEFAULT:
MYODBCDbgReturn( getData( nColumnNumber,
(MDescriptorRecordIRD*)getImpRowDesc()->getRecord( nColumnNumber ), pTargetValue,
nBufferLength, pnLength, pnIndicator ) );
- case SQL_C_CHAR:
- case SQL_C_WCHAR:
- /*!
- \internal
- \todo
+ case SQL_CHAR:
+ case SQL_VARCHAR:
+ case SQL_LONGVARCHAR:
+ case SQL_WCHAR:
+ case SQL_WVARCHAR:
+ case SQL_WLONGVARCHAR:
+ MYODBCDbgReturn( fromCharacterSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- Differentiate between char and wide-char.
- */
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(SQLWCHAR *)pTargetValue, nBufferLength * sizeof(SQLWCHAR), SQLINTEGER pnLength ) );
+ case SQL_DECIMAL:
+ case SQL_NUMERIC:
+ case SQL_TINYINT:
+ case SQL_SMALLINT:
+ case SQL_INTEGER:
+ case SQL_BIGINT:
+ case SQL_REAL:
+ case SQL_FLOAT:
+ case SQL_DOUBLE:
+ MYODBCDbgReturn( fromNumericSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_SSHORT:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(short int *)pTargetValue, pnLength ) );
+ case SQL_BIT:
+ MYODBCDbgReturn( fromBitSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_USHORT:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(unsigned short int *)pTargetValue, pnLength ) );
+ case SQL_BINARY:
+ case SQL_VARBINARY:
+ case SQL_LONGVARBINARY:
+ MYODBCDbgReturn( fromBinarySQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_SLONG:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(long int *)pTargetValue, pnLength ) );
+ case SQL_TYPE_DATE:
+ MYODBCDbgReturn( fromDateSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_ULONG:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(unsigned long int *)pTargetValue, pnLength ) );
+ case SQL_GUID:
+ MYODBCDbgReturn( fromGuidSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_FLOAT:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(float *)pTargetValue, pnLength ) );
+ case SQL_TYPE_TIME:
+ MYODBCDbgReturn( fromTimeSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_DOUBLE:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(double *)pTargetValue, pnLength ) );
+ case SQL_TYPE_TIMESTAMP:
+ MYODBCDbgReturn( fromTimeStampSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_BIT:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(unsigned char *)pTargetValue, pnLength ) );
+ case SQL_INTERVAL_YEAR:
+ case SQL_INTERVAL_MONTH:
+ case SQL_INTERVAL_YEAR_TO_MONTH:
+ MYODBCDbgReturn( fromIntervalYearMonthSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_STINYINT:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(char *)pTargetValue, pnLength ) );
+ case SQL_INTERVAL_DAY:
+ case SQL_INTERVAL_HOUR:
+ case SQL_INTERVAL_MINUTE:
+ case SQL_INTERVAL_SECOND:
+ case SQL_INTERVAL_DAY_TO_HOUR:
+ case SQL_INTERVAL_DAY_TO_MINUTE:
+ case SQL_INTERVAL_DAY_TO_SECOND:
+ case SQL_INTERVAL_HOUR_TO_MINUTE:
+ case SQL_INTERVAL_HOUR_TO_SECOND:
+ case SQL_INTERVAL_MINUTE_TO_SECOND:
+ MYODBCDbgReturn( fromIntervalDayTimeSQL(
(MDescrptorRecordIRD*)(getImpRowDesc()->getRecord( nColumnNumber )), &dataTarget )
);
- case SQL_C_UTINYINT:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(unsigned char *)pTargetValue, pnLength ) );
-
- case SQL_C_SBIGINT:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(qint64 *)pTargetValue, pnLength ) );
-
- case SQL_C_UBIGINT:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(quint64 *)pTargetValue, pnLength ) );
-
- case SQL_C_BINARY:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
pTargetValue, nBufferLength, pnLength ) );
-
- case SQL_C_TYPE_DATE:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(SQL_DATE_STRUCT *)pTargetValue, pnLength ) );
-
- case SQL_C_TYPE_TIME:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(SQL_TIME_STRUCT *)pTargetValue, pnLength ) );
-
- case SQL_C_TYPE_TIMESTAMP:
- MYODBCDbgReturn( getData( getImpRowDesc()->getConciseType(), variantData,
(SQL_TIMESTAMP_STRUCT *)pTargetValue, pnLength ) );
-
+++++++++++++
case SQL_C_NUMERIC:
{
/*!
@@ -283,26 +292,6 @@
}
break;
- case SQL_C_GUID:
- SQLGUID;
- break;
-
- case SQL_C_INTERVAL_MONTH:
- case SQL_C_INTERVAL_YEAR:
- case SQL_C_INTERVAL_YEAR_TO_MONTH:
- case SQL_C_INTERVAL_DAY:
- case SQL_C_INTERVAL_HOUR:
- case SQL_C_INTERVAL_MINUTE:
- case SQL_C_INTERVAL_SECOND:
- case SQL_C_INTERVAL_DAY_TO_HOUR:
- case SQL_C_INTERVAL_DAY_TO_MINUTE:
- case SQL_C_INTERVAL_DAY_TO_SECOND:
- case SQL_C_INTERVAL_HOUR_TO_MINUTE:
- case SQL_C_INTERVAL_HOUR_TO_SECOND:
- case SQL_C_INTERVAL_MINUTE_TO_SECOND:
- SQL_INTERVAL_STRUCT;
- break;
-
default:
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY003 ) );
}
| Thread |
|---|
| • Connector/ODBC 5 commit: r250 - MYSQLPlus/MYSQLPlusLib | pharvey | 17 May |