Modified:
MYODBCDbg/MYODBCDbgLib/MYODBCDbg.cpp
MYODBCDbg/include/MYODBCDbg.h
MYODBCDes/MYODBCDesLib/MYODBCDes.cpp
MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp
MYODBCDes/MYODBCDesLib/MYODBCDesARD.cpp
MYODBCDes/MYODBCDesLib/MYODBCDesIPD.cpp
MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp
MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.cpp
MYODBCDes/MYODBCDesTest/MYODBCDesTest.cpp
MYODBCDes/include/MYODBCDes.h
MYODBCDes/include/MYODBCDesAPD.h
MYODBCDes/include/MYODBCDesARD.h
MYODBCDes/include/MYODBCDesIPD.h
MYODBCDes/include/MYODBCDesIRD.h
Log:
UNICODE:
- added more unit tests for descriptors
- started on some improvements to debug output
Modified: MYODBCDbg/MYODBCDbgLib/MYODBCDbg.cpp
===================================================================
--- MYODBCDbg/MYODBCDbgLib/MYODBCDbg.cpp 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDbg/MYODBCDbgLib/MYODBCDbg.cpp 2006-01-07 18:04:33 UTC (rev 33)
@@ -45,18 +45,34 @@
MYODBCDbg::MYODBCDbg( QIODevice * device )
: QTextStream( device )
{
+ nNestLevel = 0;
}
MYODBCDbg::MYODBCDbg( FILE * fileHandle )
: QTextStream( fileHandle, QIODevice::WriteOnly )
{
+ nNestLevel = 0;
}
MYODBCDbg::MYODBCDbg( QString * string )
: QTextStream( string, QIODevice::WriteOnly )
{
+ nNestLevel = 0;
}
+MYODBCDbg::MYODBCDbg( QByteArray * array )
+ : QTextStream( array, QIODevice::WriteOnly )
+{
+ nNestLevel = 0;
+}
+
+MYODBCDbg::MYODBCDbg( const QByteArray & array )
+ : QTextStream( array, QIODevice::WriteOnly )
+{
+ nNestLevel = 0;
+}
+
+
/*!
\brief ZZZZ
@@ -71,10 +87,12 @@
*/
void MYODBCDbg::doEnter( const char *pszFile, int nLine, const char *pszFunction )
{
- *this << QString( "%1:%2: %3 [ENTER ] " )
+ doNestLevel();
+ *this << QString( "[ENTER ] %1:%2: %3 " )
.arg( pszFile )
.arg( nLine )
.arg( pszFunction ) << endl;
+ nNestLevel++;
}
/*!
@@ -94,14 +112,23 @@
*/
SQLRETURN MYODBCDbg::doReturn( const char *pszFile, int nLine, const char *pszFunction,
SQLRETURN nReturn )
{
- *this << QString( "%1:%2: %3 [RETURN ] " )
+ doNestLevel();
+ *this << QString( "[RETURN ] %1:%2: %3 " )
.arg( pszFile )
.arg( nLine )
.arg( pszFunction ) << getReturnString( nReturn ) << endl;
-
+ nNestLevel--;
return nReturn;
}
+void MYODBCDbg::doNestLevel()
+{
+ for ( int n = 0; n < nNestLevel; n++ )
+ {
+ *this << " ";
+ }
+}
+
/*!
\brief Returns a string version of a connection attribute.
Modified: MYODBCDbg/include/MYODBCDbg.h
===================================================================
--- MYODBCDbg/include/MYODBCDbg.h 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDbg/include/MYODBCDbg.h 2006-01-07 18:04:33 UTC (rev 33)
@@ -48,6 +48,8 @@
void doEnter( const char *pszFile, int nLine, const char *pszFunction );
SQLRETURN doReturn( const char *pszFile, int nLine, const char *pszFunction,
SQLRETURN nReturn );
+ virtual void doNestLevel();
+
static QString getConnectAttrString( SQLINTEGER nAttribute );
static QString getConnectOptionString( SQLUSMALLINT nOption );
static QString getDiagFieldString( SQLSMALLINT nDiagField );
@@ -60,7 +62,7 @@
static QString getStmtOptionString( SQLUSMALLINT nOption );
protected:
-
+ int nNestLevel;
};
/*!
@@ -129,7 +131,7 @@
{\
if ( gpMYODBCDbg )\
{\
- QString stringHeader = QString( "%1:%2: %3 [INFO ] " )\
+ QString stringHeader = QString( "[INFO ] %1:%2: %3 " )\
.arg( __FILE__ )\
.arg( __LINE__ )\
.arg( __FUNCTION__ );\
@@ -143,7 +145,7 @@
{\
if ( gpMYODBCDbg )\
{\
- QString stringHeader = QString( "%1:%2: %3 [ERROR ] " )\
+ QString stringHeader = QString( "[ERROR ] %1:%2: %3 " )\
.arg( __FILE__ )\
.arg( __LINE__ )\
.arg( __FUNCTION__ );\
@@ -157,7 +159,7 @@
{\
if ( gpMYODBCDbg )\
{\
- QString stringHeader = QString( "%1:%2: %3 [WARNING] " )\
+ QString stringHeader = QString( "[WARNING] %1:%2: %3 " )\
.arg( __FILE__ )\
.arg( __LINE__ )\
.arg( __FUNCTION__ );\
@@ -183,7 +185,7 @@
{\
if ( gpMYODBCDbg )\
{\
- QString stringHeader = QString( "%1:%2: %3 [RETURN ] " )\
+ QString stringHeader = QString( "[RETURN ] %1:%2: %3 " )\
.arg( __FILE__ )\
.arg( __LINE__ )\
.arg( __FUNCTION__ );\
@@ -196,7 +198,7 @@
if ( gpMYODBCDbg )\
{\
QString stringMessage;\
- QString stringHeader = QString( "%1:%2: %3 [RETURN ] " )\
+ QString stringHeader = QString( "[RETURN ] %1:%2: %3 " )\
.arg( __FILE__ )\
.arg( __LINE__ )\
.arg( __FUNCTION__ );\
Modified: MYODBCDes/MYODBCDesLib/MYODBCDes.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDes.cpp 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/MYODBCDesLib/MYODBCDes.cpp 2006-01-07 18:04:33 UTC (rev 33)
@@ -43,9 +43,13 @@
/* derived classes must create bookmark ass needed */
+ /* we must have a owner (dbc or stm) */
+ Q_ASSERT( !hOwner );
+
/* associate with our owner (caller needs to add us to hOwner's list of descriptors)
*/
this->hOwner = hOwner;
+ /* descriptors have their own diagnostics - and this is it */
pdia = new MYODBCDia();
MYODBCDbgReturn2();
@@ -74,13 +78,10 @@
{
MYODBCDbgEnter();
-// while ( !listRecords.isEmpty() )
-// delete listRecords[0];
-
while ( !listRecords.isEmpty() )
delete listRecords.takeFirst();
-// delete pdia;
+ delete pdia;
MYODBCDbgReturn2();
}
Modified: MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp 2006-01-07 18:04:33 UTC (rev 33)
@@ -32,10 +32,7 @@
/*!
\internal ODBC Rule
- ARD: R
APD: R
- IRD: R
- IPD: R
*/
MYODBCDbgReturn( getDia()->doAppend( MYODBC_DIA_HY091, 0, NULL ) );
@@ -43,10 +40,7 @@
/*!
\internal ODBC Rule
- ARD: R/W
APD: R/W
- IRD: Unused
- IPD: Unused
*/
MYODBCDbgReturn( setArraySize( (SQLUINTEGER)pValuePtr ) );
@@ -54,10 +48,7 @@
/*!
\internal ODBC Rule
- ARD: R/W
APD: R/W
- IRD: R/W
- IPD: R/W
*/
MYODBCDbgReturn( setArrayStatusPtr( (SQLUSMALLINT*)pValuePtr ) );
@@ -65,10 +56,7 @@
/*!
\internal ODBC Rule
- ARD: R/W
APD: R/W
- IRD: Unused
- IPD: Unused
*/
MYODBCDbgReturn( setBindOffsetPtr( (SQLINTEGER*)pValuePtr ) );
@@ -76,10 +64,7 @@
/*!
\internal ODBC Rule
- ARD: R/W
APD: R/W
- IRD: Unused
- IPD: Unused
*/
/*
@@ -96,31 +81,40 @@
/*!
\internal ODBC Rule
- ARD: R/W
APD: R/W
- IRD: R
- IPD: R/W
*/
- /* expand/shrink record list; free, even, bound records as needed */
+ /*! \internal ODBC Rule
+
+ (DM) The FieldIdentifier argument was SQL_DESC_COUNT, and *ValuePtr
+ argument was less than 0.
+ */
+ if ( (SQLSMALLINT)pValuePtr < 0 )
+ MYODBCDbgReturn( getDia()->doAppend( MYODBC_DIA_07009, 0, NULL ) );
+
MYODBCDbgReturn( setCount( (SQLSMALLINT)pValuePtr, true ) );
case SQL_DESC_ROWS_PROCESSED_PTR:
/*!
\internal ODBC Rule
- ARD: Unused
APD: Unused
- IRD: R/W
- IPD: R/W
*/
MYODBCDbgReturn( getDia()->doAppend( MYODBC_DIA_HY091, 0, NULL ) );
} /* switch (for header fields) */
- /* record field needs a valid record */
- if ( nRecNumber < 0 || nRecNumber >= getCount() )
+ /*! \internal ODBC Rule
+
+ The RecNumber argument was less than 0, and the DescriptorHandle argument
+ referred to an ARD or an APD.
+ */
+ if ( nRecNumber < 0 )
MYODBCDbgReturn( getDia()->doAppend( MYODBC_DIA_07009, 0, NULL ) );
+ /* auto expand record list... */
+ if ( nRecNumber >= getCount() )
+ setCount( nRecNumber );
+
/* handle as record field */
MYODBCDbgReturn( listRecords[nRecNumber]->setDescField( nFieldIdentifier,
pValuePtr, nBufferLength ) );
}
Modified: MYODBCDes/MYODBCDesLib/MYODBCDesARD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesARD.cpp 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesARD.cpp 2006-01-07 18:04:33 UTC (rev 33)
@@ -103,7 +103,14 @@
ARD: R/W
*/
- /* expand/shrink record list; free, even, bound records as needed */
+ /*! \internal ODBC Rule
+
+ (DM) The FieldIdentifier argument was SQL_DESC_COUNT, and *ValuePtr
+ argument was less than 0.
+ */
+ if ( (SQLSMALLINT)pValuePtr < 0 )
+ MYODBCDbgReturn( getDia()->doAppend( MYODBC_DIA_07009, 0, NULL ) );
+
MYODBCDbgReturn( setCount( (SQLSMALLINT)pValuePtr, true ) );
case SQL_DESC_ROWS_PROCESSED_PTR:
@@ -116,10 +123,18 @@
} /* switch (for header fields) */
- /* record field needs a valid record */
- if ( nRecNumber < 0 || nRecNumber >= getCount() )
+ /*! \internal ODBC Rule
+
+ The RecNumber argument was less than 0, and the DescriptorHandle argument
+ referred to an ARD or an APD.
+ */
+ if ( nRecNumber < 0 )
MYODBCDbgReturn( getDia()->doAppend( MYODBC_DIA_07009, 0, NULL ) );
+ /* auto expand record list... */
+ if ( nRecNumber >= getCount() )
+ setCount( nRecNumber );
+
/* handle as record field */
MYODBCDbgReturn( listRecords[nRecNumber]->setDescField( nFieldIdentifier,
pValuePtr, nBufferLength ) );
}
Modified: MYODBCDes/MYODBCDesLib/MYODBCDesIPD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesIPD.cpp 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesIPD.cpp 2006-01-07 18:04:33 UTC (rev 33)
@@ -119,6 +119,14 @@
} /* switch (for header fields) */
+ /*! \internal ODBC Rule
+
+ The FieldIdentifier argument was a record field, the RecNumber argument
+ was 0, and the DescriptorHandle argument referred to an IPD handle.
+ */
+ if ( nRecNumber == 0 )
+ MYODBCDbgReturn( getDia()->doAppend( MYODBC_DIA_07009, 0, NULL ) );
+
/* record field needs a valid record */
if ( nRecNumber < 0 || nRecNumber >= getCount() )
MYODBCDbgReturn( getDia()->doAppend( MYODBC_DIA_07009, 0, NULL ) );
Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp 2006-01-07 18:04:33 UTC (rev 33)
@@ -20,6 +20,13 @@
this->pdes = pdes;
+ nConciseType = SQL_C_DEFAULT;
+ pDataPtr = NULL;
+ pnIndicatorPtr = NULL;
+ pnOctetLengthPtr = NULL;
+ nParamterType = SQL_PARAM_INPUT;
+ nType = SQL_C_DEFAULT;
+
MYODBCDbgReturn2();
}
Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.cpp 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.cpp 2006-01-07 18:04:33 UTC (rev 33)
@@ -18,6 +18,8 @@
Q_ASSERT( !pdes );
+ nType = SQL_C_DEFAULT;
+
MYODBCDbgReturn2();
}
Modified: MYODBCDes/MYODBCDesTest/MYODBCDesTest.cpp
===================================================================
--- MYODBCDes/MYODBCDesTest/MYODBCDesTest.cpp 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/MYODBCDesTest/MYODBCDesTest.cpp 2006-01-07 18:04:33 UTC (rev 33)
@@ -1,4 +1,6 @@
#include <QtTest/QtTest>
+#include <QString>
+#include <QFile>
#include <MYODBCDes.h>
#include <MYODBCRtti.h>
@@ -8,55 +10,120 @@
public:
MYODBCDesTest();
~MYODBCDesTest();
- MYODBC_RTTI_TYPE nFakeDBC;
- SQLHANDLE hOwner;
- MYODBCDesAPD * pdes;
+ QFile fileDebugOut;
+
private slots:
void alloc();
void countUp();
+ void autoCountUp();
+ void countDown();
};
MYODBCDesTest::MYODBCDesTest()
{
- MYODBCDbgInit( stdout );
- pdes = NULL;
+ fileDebugOut.setFileName( "MYODBCDesTest.txt" );
+ if ( fileDebugOut.open( QFile::WriteOnly | QFile::Truncate ) )
+ {
+ MYODBCDbgInit( &fileDebugOut );
+ }
+ else
+ {
+ MYODBCDbgInit( stdout );
+ }
}
MYODBCDesTest::~MYODBCDesTest()
{
- if ( pdes) delete pdes;
MYODBCDbgFini();
+ fileDebugOut.close();
}
void MYODBCDesTest::alloc()
{
- nFakeDBC = MYODBC_RTTI_DBC;
- hOwner = &nFakeDBC;
- pdes = new MYODBCDesAPD( hOwner );
+ MYODBC_RTTI_TYPE nFakeDBC = MYODBC_RTTI_DBC;
+ SQLHANDLE hOwner = &nFakeDBC;
+ MYODBCDesAPD * pdes = new MYODBCDesAPD( hOwner );
/* this failing would be bad :... */
QVERIFY( pdes );
/* whats is max record number we can access... */
QVERIFY( pdes->getCount() == 0 );
+
+ delete pdes;
}
void MYODBCDesTest::countUp()
{
- SQLSMALLINT nLastIndex = 5;
- SQLRETURN nReturn;
+ MYODBC_RTTI_TYPE nFakeDBC = MYODBC_RTTI_DBC;
+ SQLHANDLE hOwner = &nFakeDBC;
+ MYODBCDesAPD * pdes = new MYODBCDesAPD( hOwner );
+ SQLSMALLINT nLastIndex = 5;
+ SQLSMALLINT nCount;
+ SQLRETURN nReturn;
/* try to increase record count... */
nReturn = pdes->setDescField( 0, SQL_DESC_COUNT, (SQLPOINTER)nLastIndex,
SQL_IS_SMALLINT );
QVERIFY( SQL_SUCCEEDED( nReturn ) );
/* read record count... */
- nReturn = pdes->getDescField( 0, SQL_DESC_COUNT, (SQLPOINTER)&nLastIndex,
SQL_IS_SMALLINT, NULL );
+ nReturn = pdes->getDescField( 0, SQL_DESC_COUNT, (SQLPOINTER)&nCount,
SQL_IS_SMALLINT, NULL );
QVERIFY( SQL_SUCCEEDED( nReturn ) );
/* whats is max record number we can access... */
- QVERIFY( nLastIndex == 5 );
+ QVERIFY( nCount == nLastIndex );
/* whats is max record number we can access... */
- QVERIFY( pdes->getCount() == 5 );
+ QVERIFY( pdes->getCount() == nLastIndex );
+
+ delete pdes;
}
+void MYODBCDesTest::autoCountUp()
+{
+ MYODBC_RTTI_TYPE nFakeDBC = MYODBC_RTTI_DBC;
+ SQLHANDLE hOwner = &nFakeDBC;
+ MYODBCDesAPD * pdes = new MYODBCDesAPD( hOwner );
+ SQLRETURN nReturn;
+ SQLSMALLINT nRecord = 5;
+ SQLSMALLINT nCount;
+
+ /* try to increase record count by... */
+ nReturn = pdes->setDescField( nRecord, SQL_DESC_TYPE, (SQLPOINTER)SQL_C_CHAR,
SQL_IS_SMALLINT );
+ QVERIFY( SQL_SUCCEEDED( nReturn ) );
+ /* read record count... */
+ nReturn = pdes->getDescField( 0, SQL_DESC_COUNT, (SQLPOINTER)&nCount,
SQL_IS_SMALLINT, NULL );
+ QVERIFY( SQL_SUCCEEDED( nReturn ) );
+ /* whats is max record number we can access... */
+ QVERIFY( nCount == nRecord );
+ /* whats is max record number we can access... */
+ QVERIFY( pdes->getCount() == nRecord );
+
+ delete pdes;
+}
+
+void MYODBCDesTest::countDown()
+{
+ MYODBC_RTTI_TYPE nFakeDBC = MYODBC_RTTI_DBC;
+ SQLHANDLE hOwner = &nFakeDBC;
+ MYODBCDesAPD * pdes = new MYODBCDesAPD( hOwner );
+ SQLSMALLINT nCount = 5;
+ SQLRETURN nReturn;
+
+ /* try to increase record count... */
+ nReturn = pdes->setDescField( 0, SQL_DESC_COUNT, (SQLPOINTER)nCount,
SQL_IS_SMALLINT );
+ QVERIFY( SQL_SUCCEEDED( nReturn ) );
+ QVERIFY( pdes->getCount() == nCount );
+ /* try to decrease record count... */
+ nCount = 0;
+ nReturn = pdes->setDescField( 0, SQL_DESC_COUNT, (SQLPOINTER)nCount,
SQL_IS_SMALLINT );
+ QVERIFY( SQL_SUCCEEDED( nReturn ) );
+ QVERIFY( pdes->getCount() == nCount );
+ /* try to decrease record count to < 0... */
+ nCount = -1;
+ nReturn = pdes->setDescField( 0, SQL_DESC_COUNT, (SQLPOINTER)nCount,
SQL_IS_SMALLINT );
+ QVERIFY( !SQL_SUCCEEDED( nReturn ) );
+ QVERIFY( pdes->getCount() == 0 );
+
+ delete pdes;
+}
+
QTEST_MAIN( MYODBCDesTest )
#include "MYODBCDesTest.moc"
Modified: MYODBCDes/include/MYODBCDes.h
===================================================================
--- MYODBCDes/include/MYODBCDes.h 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/include/MYODBCDes.h 2006-01-07 18:04:33 UTC (rev 33)
@@ -88,7 +88,7 @@
virtual SQLRETURN setArrayStatusPtr( SQLUSMALLINT *pnArrayStatusPtr );
virtual SQLRETURN setBindOffsetPtr( SQLINTEGER *pnBindOffsetPtr );
virtual SQLRETURN setBindType( SQLINTEGER nBindType );
- virtual SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind ) = 0;
+ virtual SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind = false ) = 0;
virtual SQLRETURN setRowsProcessedPtr( SQLUINTEGER *pnRowsProcessedPtr );
/* record fields */
Modified: MYODBCDes/include/MYODBCDesAPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesAPD.h 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/include/MYODBCDesAPD.h 2006-01-07 18:04:33 UTC (rev 33)
@@ -22,7 +22,7 @@
/* setters */
SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
- SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind );
+ SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind = false );
/* getters */
};
Modified: MYODBCDes/include/MYODBCDesARD.h
===================================================================
--- MYODBCDes/include/MYODBCDesARD.h 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/include/MYODBCDesARD.h 2006-01-07 18:04:33 UTC (rev 33)
@@ -22,7 +22,7 @@
/* setters */
SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
- SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind );
+ SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind = false );
/* getters */
};
Modified: MYODBCDes/include/MYODBCDesIPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesIPD.h 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/include/MYODBCDesIPD.h 2006-01-07 18:04:33 UTC (rev 33)
@@ -22,7 +22,7 @@
/* setters */
SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
- SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind );
+ SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind = false );
/* getters */
};
Modified: MYODBCDes/include/MYODBCDesIRD.h
===================================================================
--- MYODBCDes/include/MYODBCDesIRD.h 2006-01-07 06:48:25 UTC (rev 32)
+++ MYODBCDes/include/MYODBCDesIRD.h 2006-01-07 18:04:33 UTC (rev 33)
@@ -22,7 +22,7 @@
/* setters */
SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
- SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind );
+ SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind = false );
/* getters */
};
| Thread |
|---|
| • Connector/ODBC 5 commit: r33 - MYODBCDbg/MYODBCDbgLib MYODBCDbg/include MYODBCDes/MYODBCDesLib MYODBCDes/MYODBCDesTest MYODBCDes/include | pharvey | 7 Jan |