Modified:
trunk/SDK/MYSQLPlus/Library/Library.pro
trunk/SDK/MYSQLPlus/Library/MResult.cpp
trunk/SDK/MYSQLPlus/Library/MResult.h
trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp
trunk/SDK/MYSQLPlus/Library/MResultPlus.h
Log:
changes/additions for block-cursor support
Modified: trunk/SDK/MYSQLPlus/Library/Library.pro
===================================================================
--- trunk/SDK/MYSQLPlus/Library/Library.pro 2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/Library.pro 2006-09-11 08:09:46 UTC (rev 537)
@@ -7,7 +7,7 @@
include( ../../../common.pri )
include( ../../../config.pri )
include( ../../../defines.pri )
-CONFIG += staticlib ResultPlus
+CONFIG += staticlib
# CONFIG += staticlib ResultPlus ResultRes ResultStmt
INCLUDEPATH += ../../C/include
INCLUDEPATH += ../../Dbg/include
Modified: trunk/SDK/MYSQLPlus/Library/MResult.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.cpp 2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/MResult.cpp 2006-09-11 08:09:46 UTC (rev 537)
@@ -47,7 +47,7 @@
nRow = 0;
pDescriptorRecordIRD = NULL;
pDescriptorRecordARD = NULL;
- nBytesRemaining = 0; /*!< only used indirectly via pnBytesRemaining
when pnBytesRemaining==NULL - do not use otherwise! */
+ nBytesRemaining = 0;
MYODBCDbgReturn2();
}
@@ -539,7 +539,7 @@
{
if ( MDescriptorRecordIRD::isVariableLength(
resultGetData.pDescriptorRecordIRD->getConciseType() ) )
{
- if ( nColumn == 0 || *(resultGetData.pnBytesRemaining) == 0 ||
vectorRows.at( resultGetData.nRow ).vectorColumns.at( resultGetData.nColumn ).isNull() )
+ if ( resultGetData.nColumn == 0 || *(resultGetData.pnBytesRemaining) == 0 ||
vectorRows.at( resultGetData.nRow ).vectorColumns.at( resultGetData.nColumn ).isNull() )
MYODBCDbgReturn( SQL_NO_DATA );
/*!
@@ -811,6 +811,64 @@
}
/*!
+ \brief Refresh the application buffers.
+
+ - SQL_ATTR_ROW_STATUS_PTR (row status buffer - must match the RowSetSize)
+ - SQL_ROW_SUCCESS
+ - SQL_ROW_SUCCESS_WITH_INFO
+ - SQL_ROW_ERROR
+ - SQL_ROW_UPDATED
+ - SQL_ROW_DELETED
+ - SQL_ROW_ADDED
+ - SQL_ATTR_ROWS_FETCHED_PTR (to return RowSetRows)
+ - ARD (bound buffers - must match the RowSetSize)
+ - SQL_ATTR_ROW_BIND_TYPE (bound by columns or rows)
+ - SQL_BIND_BY_COLUMN <default>
+ - length of a structure or an instance of a buffer
+
+*/
+SQLRETURN MResult::doRefresh()
+{
+ MYODBCDbgEnter();
+
+ if ( getState() < STATE_EXECUTED )
+ MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010 ) );
+
+ resultSetData.doClear();
+ resultGetData.doClear();
+
+ SQLUSMALLINT * pnArrayStatus = getImpRowDesc()->getArrayStatusPtr();
+ SQLUINTEGER nRow = 0;
+
+ if ( isValidResultSetRow() )
+ nRow = getResultSetRowIndex();
+
+ for ( ; nRow < nRowSetSize; nRow++ )
+ {
+ switch ( vectorRows.at( nRow ).nStatus )
+ {
+ case SQL_ROW_SUCCESS:
+ case SQL_ROW_SUCCESS_WITH_INFO:
+ case SQL_ROW_UPDATED:
+ case SQL_ROW_DELETED:
+ case SQL_ROW_ADDED:
+ if ( getRowSetSize() > 1 )
+ doRefreshArray( nRow );
+ else
+ doRefresh( nRow );
+ break;
+ case SQL_ROW_ERROR:
+ break;
+ default:
+ }
+ if ( pnArrayStatus )
+ pnArrayStatus[nRow] = vectorRows.at( nRow ).nStatus;
+ }
+
+ MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+/*!
\brief Aligns the RowSet with the first row in ResultSet.
<B>ResultSetRow</B> is set to the first row in ResultSet.
ResultSetRow, and
@@ -2449,10 +2507,10 @@
to retrieve 50 characters of data.
*/
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- QString stringData = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString();
+ QString stringData = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString();
if ( pResultGetData->pTarget && pResultGetData->nBytesMax )
{
if ( MYODBCC::doStringCopyOut( (SQLCHAR*)pResultGetData->pTarget,
pResultGetData->nBytesMax, (SQLCHAR*)stringData.toAscii().data() ) )
@@ -2462,7 +2520,7 @@
else
{
*pResultGetData->pnBytesRemaining = stringData.length() -
pResultGetData->nBytesMax;
- vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( stringData.mid( pResultGetData->nBytesMax - 1 )
);
+ vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( stringData.mid( pResultGetData->nBytesMax - 1 )
);
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
}
@@ -2510,10 +2568,10 @@
to retrieve 50 characters of data.
*/
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- QString stringData = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString();
+ QString stringData = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString();
if ( pResultGetData->pTarget && pResultGetData->nBytesMax )
{
if ( MYODBCC::doStringCopyOut( (SQLWCHAR*)pResultGetData->pTarget,
pResultGetData->nBytesMax / sizeof(SQLWCHAR), (SQLWCHAR*)stringData.utf16() ) )
@@ -2523,7 +2581,7 @@
else
{
*pResultGetData->pnBytesRemaining = stringData.length() * sizeof(SQLWCHAR)
- pResultGetData->nBytesMax;
- vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( stringData.mid( (pResultGetData->nBytesMax - 1)
/ sizeof(SQLWCHAR) ) );
+ vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( stringData.mid( (pResultGetData->nBytesMax - 1)
/ sizeof(SQLWCHAR) ) );
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
}
@@ -2573,10 +2631,10 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<short int>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<short int>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((short int *)(pResultGetData->pTarget)) = (short int)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toInt();
+ *((short int *)(pResultGetData->pTarget)) = (short int)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toInt();
*pResultGetData->pnBytesRemaining = 0;
@@ -2610,12 +2668,12 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned short int>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned short int>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((unsigned short int *)pResultGetData->pTarget) = (unsigned short
int)vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toUInt();
+ *((unsigned short int *)pResultGetData->pTarget) = (unsigned short
int)vectorRows.at( pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).toUInt();
- vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).clear();
+ vectorRows.at( pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).clear();
*pResultGetData->pnBytesRemaining = 0;
MYODBCDbgReturn( SQL_SUCCESS );
@@ -2659,17 +2717,17 @@
pResultGetData->pDescriptorRecordIRD->getConciseType() == SQL_TYPE_DATE
||
pResultGetData->pDescriptorRecordIRD->getConciseType() ==
SQL_TYPE_TIMESTAMP )
{
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDateTime>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDateTime>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((long int *)pResultGetData->pTarget) = (long int)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).toDateTime().toTime_t();
+ *((long int *)pResultGetData->pTarget) = (long int)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).toDateTime().toTime_t();
}
else
{
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<qlonglong>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<qlonglong>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((long int *)pResultGetData->pTarget) = (long int)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
+ *((long int *)pResultGetData->pTarget) = (long int)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
}
*pResultGetData->pnBytesRemaining = 0;
@@ -2707,7 +2765,7 @@
// if ( !pResultGetData->variantData.canConvert<unsigned long int>() )
// MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((unsigned long int *)pResultGetData->pTarget) = (unsigned long
int)vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toULongLong();
+ *((unsigned long int *)pResultGetData->pTarget) = (unsigned long
int)vectorRows.at( pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn
).toULongLong();
*pResultGetData->pnBytesRemaining = 0;
@@ -2741,10 +2799,10 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<float>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<float>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((float *)pResultGetData->pTarget) = (float)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toDouble();
+ *((float *)pResultGetData->pTarget) = (float)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toDouble();
*pResultGetData->pnBytesRemaining = 0;
@@ -2778,10 +2836,10 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<double>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<double>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((double *)pResultGetData->pTarget) = (double)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toDouble();
+ *((double *)pResultGetData->pTarget) = (double)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toDouble();
*pResultGetData->pnBytesRemaining = 0;
@@ -2815,7 +2873,7 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned char>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned char>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
/*!
@@ -2825,9 +2883,9 @@
This rule is for compat with v3 - but we issue a warning.
*/
- if ( vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toInt() == 0 )
+ if ( vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toInt() == 0 )
*((unsigned char *)pResultGetData->pTarget) = 0;
- else if ( vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toInt() == 1 )
+ else if ( vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toInt() == 1 )
*((unsigned char *)pResultGetData->pTarget) = 1;
else
{
@@ -2867,10 +2925,10 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<char>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<char>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((char *)pResultGetData->pTarget) = vectorRows.at( pRresultGetData->nRow
).vectorColumns.at( pResultGetData->nColumn ).toInt();
+ *((char *)pResultGetData->pTarget) = vectorRows.at( pResultGetData->nRow
).vectorColumns.at( pResultGetData->nColumn ).toInt();
*pResultGetData->pnBytesRemaining = 0;
@@ -2904,10 +2962,10 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned char>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<unsigned char>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((unsigned char *)pResultGetData->pTarget) = vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toInt();
+ *((unsigned char *)pResultGetData->pTarget) = vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toInt();
*pResultGetData->pnBytesRemaining = 0;
@@ -2941,10 +2999,10 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<qint64>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<qint64>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((qint64 *)pResultGetData->pTarget) = (qint64)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
+ *((qint64 *)pResultGetData->pTarget) = (qint64)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
*pResultGetData->pnBytesRemaining = 0;
@@ -2978,10 +3036,10 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<quint64>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<quint64>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- *((quint64 *)pResultGetData->pTarget) = (quint64)vectorRows.at(
pRresultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
+ *((quint64 *)pResultGetData->pTarget) = (quint64)vectorRows.at(
pResultGetData->nRow ).vectorColumns.at( pResultGetData->nColumn ).toLongLong();
*pResultGetData->pnBytesRemaining = 0;
@@ -3004,10 +3062,10 @@
{
MYODBCDbgEnter();
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QByteArray>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QByteArray>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- QByteArray bytearray = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toByteArray();
+ QByteArray bytearray = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toByteArray();
if ( pResultGetData->pTarget && pResultGetData->nBytesMax )
{
@@ -3019,7 +3077,7 @@
else
{
*pResultGetData->pnBytesRemaining = bytearray.size() -
pResultGetData->nBytesMax;
- vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( bytearray.mid( pResultGetData->nBytesMax - 1 )
);
+ vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( bytearray.mid( pResultGetData->nBytesMax - 1 )
);
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
}
@@ -3052,10 +3110,10 @@
{
MYODBCDbgEnter();
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QByteArray>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QByteArray>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- QByteArray bytearray = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toByteArray();
+ QByteArray bytearray = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toByteArray();
if ( pResultGetData->pTarget && pResultGetData->nBytesMax )
{
@@ -3067,7 +3125,7 @@
else
{
*pResultGetData->pnBytesRemaining = bytearray.size() -
pResultGetData->nBytesMax;
- vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( bytearray.mid( pResultGetData->nBytesMax - 1 )
);
+ vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).setValue( bytearray.mid( pResultGetData->nBytesMax - 1 )
);
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
}
@@ -3109,10 +3167,10 @@
SQL_DATE_STRUCT *pDateTarget = (SQL_DATE_STRUCT *)pResultGetData->pTarget;
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDate>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDate>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- QDate d = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toDate();
+ QDate d = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toDate();
pDateTarget->day = d.day();
pDateTarget->month = d.month();
pDateTarget->year = d.year();
@@ -3151,10 +3209,10 @@
SQL_TIME_STRUCT *pTimeTarget = (SQL_TIME_STRUCT *)pResultGetData->pTarget;
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QTime>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QTime>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- QTime t = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toTime();
+ QTime t = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toTime();
pTimeTarget->hour = t.hour();
pTimeTarget->minute = t.minute();
pTimeTarget->second = t.second();
@@ -3193,10 +3251,10 @@
SQL_TIMESTAMP_STRUCT *pTimeStampTarget = (SQL_TIMESTAMP_STRUCT
*)pResultGetData->pTarget;
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDateTime>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QDateTime>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
- QDateTime t = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toDateTime();
+ QDateTime t = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toDateTime();
pTimeStampTarget->day = t.date().day();
pTimeStampTarget->fraction = t.time().msec(); /*! \todo fraction is not same as
msec - look into it */
pTimeStampTarget->hour = t.time().hour();
@@ -3244,7 +3302,7 @@
/* our high precision stuff (DECIMAL) is stored as a string and all other numerics
can be turned into a string
so lets use a string as our starting point - in this way we hope to catch &
report any possible loss of
precision/scale :) */
- if ( !vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
+ if ( !vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).canConvert<QString>() )
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006, 0,
tr("Variant (data conversion hub) could not convert to a string.") ) );
/*!
@@ -3258,7 +3316,7 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
}
- QString stringData = vectorRows.at( pRresultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString().trimmed();
+ QString stringData = vectorRows.at( pResultGetData->nRow ).vectorColumns.at(
pResultGetData->nColumn ).toString().trimmed();
/*!
\internal ODBC RULE
Modified: trunk/SDK/MYSQLPlus/Library/MResult.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResult.h 2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/MResult.h 2006-09-11 08:09:46 UTC (rev 537)
@@ -46,6 +46,7 @@
SQLUINTEGER nRow; /*!< index into vectorRows
(0-based) */
MDescriptorRecordIRD * pDescriptorRecordIRD; /*!< descriptor describing the
resultset column */
MDescriptorRecordARD * pDescriptorRecordARD; /*!< set if nTargetType ==
SQL_ARD_TYPE - otherwise this is null */
+ SQLINTEGER nBytesRemaining; /*!< only used indirectly via
pnBytesRemaining when pnBytesRemaining==NULL - do not use otherwise! */
};
/*!
@@ -319,6 +320,7 @@
/* doers */
virtual SQLRETURN doPrepare( MCommand *pCommand ) = 0; /*!< Prepare the given
command. */
+ virtual SQLRETURN doRefresh(); /*!< Load/refreshs bound
buffers provided by application. */
virtual SQLRETURN doExecute() = 0; /*!< Execute the prepared
command. */
virtual SQLRETURN doAppend() = 0;
virtual SQLRETURN doClear() = 0;
@@ -331,7 +333,6 @@
virtual SQLRETURN doSkip( qlonglong nRowSets ); /*!< Moves cursor/rowset
relative to current row in resultset. */
virtual SQLRETURN doGoto( qulonglong nRow ); /*!< Moves cursor/rowset
relative to first row of resultset. */
virtual SQLRETURN doCommit() = 0;
- virtual SQLRETURN doRefresh() = 0; /*!< Load/refreshs bound
buffers provided by application. */
/* isers */
virtual BOOLEAN isAfterEnd();
@@ -355,6 +356,9 @@
This contains the ResultSet (incl. RowSet) rows or just the RowSet rows
depending
upon the cursor settings.
+
+ At some point block-cursors may be supported in the server. If this
happens we may need to
+ abstract ourself from this - but for now its a handy solution which meets
our needs.
*/
/*@{*/
MResultRows vectorRows;
Modified: trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp 2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/MResultPlus.cpp 2006-09-11 08:09:46 UTC (rev 537)
@@ -147,48 +147,6 @@
MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010, 0,
tr("Resultset is read-only.") ) );
}
-/*!
- \brief Refresh the application buffers.
-
- - SQL_ATTR_ROW_STATUS_PTR (row status buffer - must match the RowSetSize)
- - SQL_ROW_SUCCESS
- - SQL_ROW_SUCCESS_WITH_INFO
- - SQL_ROW_ERROR
- - SQL_ROW_UPDATED
- - SQL_ROW_DELETED
- - SQL_ROW_ADDED
- - SQL_ATTR_ROWS_FETCHED_PTR (to return RowSetRows)
- - ARD (bound buffers - must match the RowSetSize)
- - SQL_ATTR_ROW_BIND_TYPE (bound by columns or rows)
- - SQL_BIND_BY_COLUMN <default>
- - length of a structure or an instance of a buffer
-
-*/
-SQLRETURN MResultPlus::doRefresh()
-{
- MYODBCDbgEnter();
-
- if ( getState() < STATE_EXECUTED )
- MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY010 ) );
-
- SQLUINTEGER nRowArraySize = getStatement()->getRowArraySize();
-
- if ( getStatement()->getCursorType() == SQL_CURSOR_FORWARD_ONLY )
- MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000, 0,
tr("doGoto() not supported when SQL_CURSOR_FORWARD_ONLY") ) );
-
- resultGetData.doClear();
-
- if ( !isValidRowSetRow( nRow ) )
- {
- nRow = 0;
- MYODBCDbgReturn( SQL_NO_DATA );
- }
-
- this->nRow = nRow;
-
- MYODBCDbgReturn( SQL_SUCCESS );
-}
-
SQLRETURN MResultPlus::doColumns( const QString &stringCatalog, const QString
&stringSchema, const QString &stringTable, const QString &stringColumn )
{
MYODBCDbgEnter();
Modified: trunk/SDK/MYSQLPlus/Library/MResultPlus.h
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MResultPlus.h 2006-09-11 07:28:32 UTC (rev 536)
+++ trunk/SDK/MYSQLPlus/Library/MResultPlus.h 2006-09-11 08:09:46 UTC (rev 537)
@@ -43,7 +43,6 @@
SQLRETURN setData( SQLUSMALLINT nColumn, const QVariant &variantData );
/* getters */
- SQLRETURN getData( SQLUSMALLINT nColumn, QVariant &variantData );
/* doers */
SQLRETURN doPrepare( MCommand *pCommand );
| Thread |
|---|
| • Connector/ODBC 5 commit: r537 - trunk/SDK/MYSQLPlus/Library | pharvey | 11 Sep |