List:Commits« Previous MessageNext Message »
From:pharvey Date:June 16 2006 9:50am
Subject:Connector/ODBC 5 commit: r344 - in trunk/MYSQLPlus: MYSQLPlusLib MYSQLPlusTest
View as plain text  
Modified:
   trunk/MYSQLPlus/MYSQLPlusLib/MResult.cpp
   trunk/MYSQLPlus/MYSQLPlusLib/MResultRes.cpp
   trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
   trunk/MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp
Log:
Simple SQLBindParameter works.

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MResult.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MResult.cpp	2006-06-16 06:23:12 UTC (rev 343)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MResult.cpp	2006-06-16 07:50:16 UTC (rev 344)
@@ -115,7 +115,13 @@
     bBuffered       = true;
     nRowsAffected   = 0;
     nStatementType  = STATEMENT_TYPE_NULL;
-    pStatement->getImpParamDesc()->doClear();
+    /*!
+        \internal
+        \note
+
+        We do not clear IPD as that disrupts doBindParameter.
+    */
+    // pStatement->getImpParamDesc()->doClear();
     pStatement->getImpRowDesc()->doClear();
 
     MYODBCDbgReturn2();
@@ -2465,10 +2471,15 @@
 {
     MYODBCDbgEnter();
 
+    /*!
+        \internal ODBC RULE (?)
+
+        Incoming character data is always null terminated (so ignore OctetLength).       
 
+    */
     if ( pResultPutData->pDescriptorRecordAPD->getConciseType() == SQL_C_WCHAR )
-        pResultPutData->variantData.setValue( QString::fromUtf16(
(SQLWCHAR*)pResultPutData->pDescriptorRecordAPD->getDataPtr(),
pResultPutData->pDescriptorRecordAPD->getOctetLength() ) );
+        pResultPutData->variantData.setValue( QString::fromUtf16(
(SQLWCHAR*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
     else
-        pResultPutData->variantData.setValue( QString::fromAscii(
(char*)pResultPutData->pDescriptorRecordAPD->getDataPtr(),
pResultPutData->pDescriptorRecordAPD->getOctetLength() ) );
+        pResultPutData->variantData.setValue( QString::fromAscii(
(char*)pResultPutData->pDescriptorRecordAPD->getDataPtr() ) );
 
     switch ( pResultPutData->pDescriptorRecordIPD->getConciseType() )
     {

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MResultRes.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MResultRes.cpp	2006-06-16 06:23:12 UTC (rev 343)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MResultRes.cpp	2006-06-16 07:50:16 UTC (rev 344)
@@ -520,6 +520,8 @@
                         MYODBCDbgReturn( nReturnInternal );
                 }
                 stringStatement += resultPutData.variantData.toString();
+                nParameter++;
+                continue;
             }
 
             /* plain statement segment */
@@ -804,7 +806,7 @@
             QChar cChar = stringStatement.at( nChar );
 
             /* parameter marker */
-            if ( !cQuote.isNull() && cChar == cMarker )
+            if ( cQuote.isNull() && cChar == cMarker )
             {
                 if ( !stringStatementSegment.isNull() )
                     stringlistStatement += stringStatementSegment;
@@ -826,9 +828,6 @@
             stringlistStatement += stringStatementSegment;
     }
 
-
-//    bytearrayStatementTemplate  = stringStatement.toUtf8().data();
-
     setStatementType( stringStatement );
     setState( STATE_PREPARED );
 

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-06-16 06:23:12 UTC (rev 343)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-06-16 07:50:16 UTC (rev 344)
@@ -2117,8 +2117,18 @@
                 SQL_RESET_PARAMS: Sets the SQL_DESC_COUNT field of the APD to 0,
releasing all parameter buffers set by 
                 SQLBindParameter for the given StatementHandle.
             */
-            MYODBCDbgReturn( getAppParamDesc()->setCount( 0, true ) );
+            /*!
+                \internal MYODBC RULE
 
+                We also clear out the IPD as this should be in synch with the APD.
+            */
+            {
+                SQLRETURN nReturn;
+                nReturn = getAppParamDesc()->setCount( 0, true );
+                nReturn = getImpParamDesc()->setCount( 0, true );
+                MYODBCDbgReturn( nReturn );
+            }
+
         default:
             /*!
                 \internal ODBC RULE (DM)

Modified: trunk/MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp	2006-06-16 06:23:12 UTC (rev 343)
+++ trunk/MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp	2006-06-16 07:50:16 UTC (rev 344)
@@ -155,8 +155,7 @@
 
     nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( vcName ) VALUES (
'name1' )"), SQL_NTS );
     if ( nReturn != SQL_SUCCESS )
-        *gpMYODBCDbg << endl << statement.getDiagnostics().join( "\n" )
<< endl;
-//        textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
+        textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
 
     nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( vcName ) VALUES (
'name2' )"), SQL_NTS );
@@ -270,25 +269,21 @@
     SQLINTEGER  nStrLenOrIndCreated = 0;
     SQLINTEGER  nRowCount           = 0;
 
-printf( "[PAH][%s][%d]\n", __FILE__, __LINE__ );
-    nReturn = statement.doBindParameter( 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 100,
0, szName, 0, &nStrLenOrIndName );
+    nReturn = statement.doBindParameter( 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 100,
0, szCreated, 0, &nStrLenOrIndCreated );
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
 
-printf( "[PAH][%s][%d]\n", __FILE__, __LINE__ );
-    nReturn = statement.doBindParameter( 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 100,
0, szCreated, 0, &nStrLenOrIndCreated );
+    nReturn = statement.doBindParameter( 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 100,
0, szName, sizeof(szName), &nStrLenOrIndName );
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
 
-printf( "[PAH][%s][%d]\n", __FILE__, __LINE__ );
     nReturn = statement.doPrepare( TEXT("UPDATE tbMyODBCTest SET dCreated = ? WHERE
vcName = ?"), SQL_NTS );
     if ( nReturn != SQL_SUCCESS )
         textstreamStdOut << endl << endl <<
statement.getDiagnostics().join( "\n" ) << endl << endl;
     QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
 
-printf( "[PAH][%s][%d]\n", __FILE__, __LINE__ );
     strcpy( (char*)szName, "name2" ); 
     sprintf( (char*)szCreated, "1963-08-17 01:45:00" );
 

Thread
Connector/ODBC 5 commit: r344 - in trunk/MYSQLPlus: MYSQLPlusLib MYSQLPlusTestpharvey16 Jun