List:Commits« Previous MessageNext Message »
From:pharvey Date:May 23 2006 4:32am
Subject:Connector/ODBC 5 commit: r262 - / MYSQLPlus/MYSQLPlusLib examples examples/HelloWorld
View as plain text  
Added:
   examples/
   examples/HelloWorld/
   examples/HelloWorld/HelloWorld.c
Modified:
   MYSQLPlus/MYSQLPlusLib/MDescriptorRecord.cpp
   MYSQLPlus/MYSQLPlusLib/MDiagnostic.cpp
   MYSQLPlus/MYSQLPlusLib/MDiagnosticRecord.cpp
   MYSQLPlus/MYSQLPlusLib/MResult.cpp
   MYSQLPlus/MYSQLPlusLib/MResultStmt.cpp
   MYSQLPlus/MYSQLPlusLib/MStatement.cpp
Log:


Modified: MYSQLPlus/MYSQLPlusLib/MDescriptorRecord.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MDescriptorRecord.cpp	2006-05-19 17:41:04 UTC (rev 261)
+++ MYSQLPlus/MYSQLPlusLib/MDescriptorRecord.cpp	2006-05-23 04:32:02 UTC (rev 262)
@@ -947,13 +947,13 @@
 
         case SQL_DESC_BASE_COLUMN_NAME:
             *pnStringLengthPtr = getBaseColumnName().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getBaseColumnName().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getBaseColumnName().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
         case SQL_DESC_BASE_TABLE_NAME:
             *pnStringLengthPtr = getBaseTableName().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getBaseTableName().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getBaseTableName().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
@@ -963,7 +963,7 @@
 
         case SQL_DESC_CATALOG_NAME:
             *pnStringLengthPtr = getCatalogName().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getCatalogName().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getCatalogName().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
@@ -1005,7 +1005,7 @@
 
         case SQL_DESC_LABEL:
             *pnStringLengthPtr = getLabel().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getLabel().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getLabel().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
@@ -1015,25 +1015,25 @@
 
         case SQL_DESC_LITERAL_PREFIX:
             *pnStringLengthPtr = getLiteralPrefix().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getLiteralPrefix().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getLiteralPrefix().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
         case SQL_DESC_LITERAL_SUFFIX:
             *pnStringLengthPtr = getLiteralSuffix().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getLiteralSuffix().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getLiteralSuffix().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
         case SQL_DESC_LOCAL_TYPE_NAME:
             *pnStringLengthPtr = getLocalTypeName().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getLocalTypeName().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getLocalTypeName().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
         case SQL_DESC_NAME:
             *pnStringLengthPtr = getName().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getName().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getName().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
@@ -1067,7 +1067,7 @@
 
         case SQL_DESC_SCHEMA_NAME:
             *pnStringLengthPtr = getSchemaName().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getSchemaName().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getSchemaName().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
@@ -1077,7 +1077,7 @@
 
         case SQL_DESC_TABLE_NAME:
             *pnStringLengthPtr = getTableName().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getTableName().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getTableName().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 
@@ -1087,7 +1087,7 @@
 
         case SQL_DESC_TYPE_NAME:
             *pnStringLengthPtr = getTypeName().length() * sizeof(SQLWCHAR);
-            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), getTypeName().utf16() ) )
+            if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pValuePtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)getTypeName().utf16() ) )
                 MYODBCDbgReturn( getDescriptor()->getDiagnostic()->doAppend(
MDiagnostic::DIA_01004 ) );
             break;
 

Modified: MYSQLPlus/MYSQLPlusLib/MDiagnostic.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MDiagnostic.cpp	2006-05-19 17:41:04 UTC (rev 261)
+++ MYSQLPlus/MYSQLPlusLib/MDiagnostic.cpp	2006-05-23 04:32:02 UTC (rev 262)
@@ -304,7 +304,7 @@
                     MYODBCDbgReturn( SQL_ERROR );
 
                 *pnStringLengthPtr = stringDynamicFunction.length() * sizeof(SQLWCHAR);
-                if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pDiagInfoPtr, nBufferLength /
sizeof(SQLWCHAR), stringDynamicFunction.utf16() ) )
+                if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pDiagInfoPtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)stringDynamicFunction.utf16() ) )
                     MYODBCDbgReturn( SQL_SUCCESS_WITH_INFO );
             }
             break;

Modified: MYSQLPlus/MYSQLPlusLib/MDiagnosticRecord.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MDiagnosticRecord.cpp	2006-05-19 17:41:04 UTC (rev 261)
+++ MYSQLPlus/MYSQLPlusLib/MDiagnosticRecord.cpp	2006-05-23 04:32:02 UTC (rev 262)
@@ -148,7 +148,7 @@
                     MYODBCDbgReturn( SQL_ERROR );
 
                 *pnStringLengthPtr = stringClassOrigin.length() * sizeof(SQLWCHAR);
-                if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pDiagInfoPtr, nBufferLength /
sizeof(SQLWCHAR), stringClassOrigin.utf16() ) )
+                if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pDiagInfoPtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)stringClassOrigin.utf16() ) )
                     MYODBCDbgReturn( SQL_SUCCESS_WITH_INFO );
             }
             break;
@@ -164,7 +164,7 @@
                     MYODBCDbgReturn( SQL_ERROR );
 
                 *pnStringLengthPtr = stringConnectionName.length() * sizeof(SQLWCHAR);
-                if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pDiagInfoPtr, nBufferLength /
sizeof(SQLWCHAR), stringConnectionName.utf16() ) )
+                if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pDiagInfoPtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)stringConnectionName.utf16() ) )
                     MYODBCDbgReturn( SQL_SUCCESS_WITH_INFO );
             }
             break;
@@ -176,7 +176,7 @@
                     MYODBCDbgReturn( SQL_ERROR );
 
                 *pnStringLengthPtr = stringMessageText.length() * sizeof(SQLWCHAR);
-                if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pDiagInfoPtr, nBufferLength /
sizeof(SQLWCHAR), stringMessageText.utf16() ) )
+                if ( !MYODBCC::doStringCopyOut( (SQLWCHAR*)pDiagInfoPtr, nBufferLength /
sizeof(SQLWCHAR), (SQLWCHAR*)stringMessageText.utf16() ) )
                     MYODBCDbgReturn( SQL_SUCCESS_WITH_INFO );
             }
             break;

Modified: MYSQLPlus/MYSQLPlusLib/MResult.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MResult.cpp	2006-05-19 17:41:04 UTC (rev 261)
+++ MYSQLPlus/MYSQLPlusLib/MResult.cpp	2006-05-23 04:32:02 UTC (rev 262)
@@ -633,7 +633,7 @@
 
         The following table shows the ODBC C data types to which character SQL data may
be converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -690,7 +690,7 @@
 
         The following table shows the ODBC C data types to which numeric SQL data may be
converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -743,7 +743,7 @@
 
         The following table shows the ODBC C data types to which bit SQL data may be
converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -784,7 +784,7 @@
 
         The following table shows the ODBC C data types to which binary SQL data may be
converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -811,7 +811,7 @@
 
         The following table shows the ODBC C data types to which date SQL data may be
converted. 
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -839,7 +839,7 @@
 
         The following table shows the ODBC C data types to which GUID SQL data may be
converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -866,7 +866,7 @@
 
         The following table shows the ODBC C data types to which time SQL data may be
converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -894,7 +894,7 @@
 
         The following table shows the ODBC C data types to which timestamp SQL data may
be converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -905,7 +905,7 @@
         case SQL_C_BINARY:
         case SQL_C_TYPE_DATE:
         case SQL_C_TYPE_TIME:
-        case SQL_C_TYPETIMESTAMP:
+        case SQL_C_TIMESTAMP:
             break;
         default:
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006 ) );
@@ -923,7 +923,7 @@
 
         The following table shows the ODBC C data types to which year-month interval SQL
data may be converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -941,7 +941,8 @@
         case SQL_C_SLONG:
         case SQL_C_ULONG:
         case SQL_C_NUMERIC:
-        case SQL_C_BIGINT:
+        case SQL_C_SBIGINT:
+        case SQL_C_UBIGINT:
         case SQL_C_BINARY:
             break;
         default:
@@ -960,7 +961,7 @@
 
         The following table shows the ODBC C data types to which day-time interval SQL
data may be converted.
     */
-    switch ( pResultDataTarget->nTargetType )
+    switch ( resultGetData.nTargetType )
     {
         case SQL_C_CHAR:
             MYODBCDbgReturn( toCharStringC() );
@@ -1035,7 +1036,7 @@
         else
         {
             if ( resultGetData.pnBytesRemaining ) *resultGetData.pnBytesRemaining =
stringData.length() - resultGetData.nBytesMax;
-            variantData.setValue( stringData.mid( resultGetData.nBytesMax - 1 ) );
+            resultGetData.variantData.setValue( stringData.mid( resultGetData.nBytesMax -
1 ) );
             MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_01004 ) );
         }
     }
@@ -1077,7 +1078,7 @@
     QString stringData = resultGetData.variantData.toString();
     if ( resultGetData.pTarget && resultGetData.nBytesMax )
     {
-        if ( MYODBCC::doStringCopyOut( (SQLWCHAR*)resultGetData.pTarget,
resultGetData.nBytesMax / sizeof(SQLWCHAR), stringData.utf16() ) )
+        if ( MYODBCC::doStringCopyOut( (SQLWCHAR*)resultGetData.pTarget,
resultGetData.nBytesMax / sizeof(SQLWCHAR), (SQLWCHAR*)stringData.utf16() ) )
         {
             resultGetData.variantData.clear();
             if ( resultGetData.pnBytesRemaining ) *resultGetData.pnBytesRemaining = 0;
@@ -1491,13 +1492,8 @@
     }
 
     /* get int ver of each part */
-    bool bOk     = true;
-    int nPrecision  = stringPrecision.toInt( &bOk );
-    if ( !bOk )
-        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006, 0,
tr("Failed to convert precision part.") ) );
-    int nScale      = stringScale.toInt( &bOk );
-    if ( !bOk )
-        MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_07006, 0,
tr("Failed to convert scale part.") ) );
+    int nPrecision  = stringPrecision.toInt();
+    int nScale      = stringScale.toInt();
 
     /*!
         \internal ODBC RULE

Modified: MYSQLPlus/MYSQLPlusLib/MResultStmt.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MResultStmt.cpp	2006-05-19 17:41:04 UTC (rev 261)
+++ MYSQLPlus/MYSQLPlusLib/MResultStmt.cpp	2006-05-23 04:32:02 UTC (rev 262)
@@ -1112,7 +1112,7 @@
     }
 
     /* 
-        Load any bound columns from SQLBindCol/ARD. Use getData to lean on Qt/QVariant
here.
+        Load any bound columns from SQLBindCol/ARD. Use getData to reduce redundant code.
     */
     {
         MDescriptor *pDescriptor    = getAppRowDesc();
@@ -1124,9 +1124,12 @@
 
             if ( pDescriptorRecord->getDataPtr() )
             {
-++++++++++
-                // virtual SQLRETURN getData( SQLUSMALLINT nColumn, SQLSMALLINT
nTargetType, SQLPOINTER pTargetValue, SQLINTEGER nBufferLength, SQLINTEGER *pnLength,
SQLINTEGER *pnIndicator );
-                SQLRETURN nReturn = getData( nColumn, pDescriptor->get );
+                SQLRETURN nReturn = MResult::getData( nColumn, 
+                                                     
pDescriptorRecord->getConciseType(), 
+                                                      pDescriptorRecord->getDataPtr(),

+                                                      pDescriptorRecord->getLength(), 
+                                                     
pDescriptorRecord->getOctetLengthPtr(), 
+                                                     
pDescriptorRecord->getIndicatorPtr() );
                 if ( nReturn != SQL_SUCCESS )
                     MYODBCDbgReturn( nReturn );
             }

Modified: MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-05-19 17:41:04 UTC (rev 261)
+++ MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-05-23 04:32:02 UTC (rev 262)
@@ -1622,7 +1622,36 @@
     */
     pDiagnostic->doClear();
 
-    MYODBCDbgReturn( SQL_ERROR );
+    /*!
+        \internal ODBC RULE (DM)
+
+        The specified StatementHandle was not in an executed state. 
+        The function was called without first calling SQLExecDirect, 
+        SQLExecute or a catalog function.
+    */
+    if ( getState() < STATE_S4 )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY010 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        An asynchronously executing function (not this one) was called 
+        for the StatementHandle and was still executing when this function 
+        was called.
+    */
+    if ( isAsyncInProgress() )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_HY010 ) );
+
+    /*!
+        \internal ODBC RULE (DM)
+
+        The StatementHandle was in an executed state, but no result 
+        set was associated with the StatementHandle.
+    */
+    if ( getState() == STATE_S4 || !pResult )
+        MYODBCDbgReturn( pDiagnostic->doAppend( MDiagnostic::DIA_24000 ) );
+
+    MYODBCDbgReturn( pResult->doNext() );
 }
 
 SQLRETURN MStatement::doFetchScroll( SQLSMALLINT nFetchOrientation, SQLINTEGER
nFetchOffset )

Added: examples/HelloWorld/HelloWorld.c
===================================================================
--- examples/HelloWorld/HelloWorld.c	2006-05-19 17:41:04 UTC (rev 261)
+++ examples/HelloWorld/HelloWorld.c	2006-05-23 04:32:02 UTC (rev 262)
@@ -0,0 +1,41 @@
+#include <sql.h>
+#include <sqlext.h>
+
+#define LAST_NAME_MAX 255
+
+/* ODBC hello world */
+int main( int argc, char *argv[] )
+{
+
+    SQLRETURN   nReturn;
+    SQLCHAR *   pszDSN  = argv[1];
+    SQLCHAR *   pszUID  = argv[2];
+    SQLCHAR *   pszPWD  = argv[3];
+    SQLCHAR     szLastName[LAST_NAME_MAX];
+    SQLINTEGER  nLastNameInd;
+
+    /* init */
+    nReturn = SQLAllocHandle( SQL_HANDLE_ENV, NULL, &hEnv );
+    nReturn = SQLSetEnvAttr( hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, 0 );
+    nReturn = SQLAllocHandle( SQL_HANDLE_DBC, hEnv, &hDbc );
+    nReturn = SQLConnect( hDbc, pszDSN, SQL_NTS, pszUID, SQL_NTS, pszPWD, SQL_NTS );
+    nReturn = SQLAllocHandle( SQL_HANDLE_STMT, hDbc, hStmt );
+
+    /* query */
+    nReturn = SQLExecDirect( hStmt, pszSQL, "SELECT vcLastName FROM tbAddresses", SQL_NTS
);
+    while ( 1 ) 
+    {
+        nReturn = SQLFetch( hStmt );
+        if ( !SQL_SUCCEEDED( nReturn ) )
+            break;
+        nReturn = SQLGetData( hStmt, 1, SQL_C_CHAR, pszLastName, LAST_NAME_MAX,
&nLastNameInd );
+   }
+
+    /* fini */
+    nReturn = SQLFreeHandle( SQL_HANDLE_STMT, hStmt );
+    nReturn = SQLFreeHandle( SQL_HANDLE_DBC, hDbc );
+    nReturn = SQLFreeHandle( SQL_HANDLE_ENV, hEnv );
+
+    return( 0 );
+}
+

Thread
Connector/ODBC 5 commit: r262 - / MYSQLPlus/MYSQLPlusLib examples examples/HelloWorldpharvey23 May