List:Commits« Previous MessageNext Message »
From:pharvey Date:April 21 2006 3:45am
Subject:Connector/ODBC 5 commit: r91 - MYODBCShell
View as plain text  
Modified:
   MYODBCShell/MYODBCShell.cpp
Log:


Modified: MYODBCShell/MYODBCShell.cpp
===================================================================
--- MYODBCShell/MYODBCShell.cpp	2006-04-20 23:10:27 UTC (rev 90)
+++ MYODBCShell/MYODBCShell.cpp	2006-04-21 03:45:19 UTC (rev 91)
@@ -249,12 +249,12 @@
     SQLUINTEGER nDataWidth                  = 10;
     SQLUINTEGER nOptimalDisplayWidth        = 10;
     SQLWCHAR    sColumnName[MAX_DATA_WIDTH] = L"";
+    SQLSMALLINT nLabelLengthBytes           = 0;
 
     SQLColAttribute( hStm, nColumn, SQL_DESC_DISPLAY_SIZE, NULL, 0, NULL, &nDataWidth
);
-    SQLColAttribute( hStm, nColumn, SQL_DESC_LABEL, sColumnName, sizeof(sColumnName),
NULL, NULL );
+    SQLColAttribute( hStm, nColumn, SQL_DESC_LABEL, sColumnName, sizeof(sColumnName),
&nLabelLengthBytes, NULL );
 
-    QString stringColumnName( sColumnName );
-    nOptimalDisplayWidth = max( stringColumnName.length(), nDataWidth );
+    nOptimalDisplayWidth = max( nLabelLengthBytes / sizeof(SQLWCHAR), nDataWidth );
 
     if ( nMaxDataWidth > 0 )
         nOptimalDisplayWidth = min( nOptimalDisplayWidth, (SQLUINTEGER)nMaxDataWidth );
@@ -284,10 +284,9 @@
         return false;
     }
 
-    if ( !SQL_SUCCEEDED( SQLPrepare( hStmt, stringCommand.utf16(), stringCommand.length()
) ) )
+    if ( !SQL_SUCCEEDED( SQLPrepare( hStm, (SQLWCHAR*)stringCommand.utf16(),
stringCommand.length() ) ) )
     {
         if ( bVerbose ) doErrors( hEnv, hDbc, hStm );
-        _ftprintf( stderr, "[MYODBCShell]ERROR: Could not SQLPrepare\n" );
         *pstreamStdErr << QString( "[%1][%2][ERROR] Could not SQLPrepare." ).arg(
__FILE__ ).arg( __LINE__ ) << endl;
         SQLFreeHandle( SQL_HANDLE_STMT, hStm );
         hStm = NULL;
@@ -328,8 +327,7 @@
 
 bool MYODBCShell::doHelp( const QString &stringCommand )
 {
-    QString     stringTable;
-    SQLINTEGER  nRows = 0;
+    QString stringTable;
 
     // init
     if ( !hDbc )
@@ -350,7 +348,7 @@
     if ( stringlist.count() > 1 )
     {
         QString stringTable = stringlist[1].trimmed();
-        if ( !SQL_SUCCEEDED( SQLColumns( hStm, NULL, 0, NULL, 0, stringTable.utf16(),
stringTable.length(), NULL, 0 ) ) )
+        if ( !SQL_SUCCEEDED( SQLColumns( hStm, NULL, 0, NULL, 0,
(SQLWCHAR*)stringTable.utf16(), stringTable.length(), NULL, 0 ) ) )
         {
             if ( bVerbose ) doErrors( hEnv, hDbc, hStm );
             *pstreamStdErr << QString( "[%1][%2][ERROR] Could not SQLColumns."
).arg( __FILE__ ).arg( __LINE__ ) << endl;
@@ -415,22 +413,22 @@
 
     if ( stringCatalog != "NULL" && !stringCatalog.isNull() )
     {
-        psCatalog  = stringCatalog.utf16();
+        psCatalog  = (SQLWCHAR*)stringCatalog.utf16();
         nCatalog   = stringCatalog.length();
     }
     if ( stringSchema != "NULL" && !stringSchema.isNull() )
     {
-        psSchema    = stringSchema.utf16();
+        psSchema    = (SQLWCHAR*)stringSchema.utf16();
         nSchema     = stringSchema.length();
     }
     if ( stringTable != "NULL" && !stringTable.isNull() )
     {
-        psTable     = stringTable.utf16();
+        psTable     = (SQLWCHAR*)stringTable.utf16();
         nTable      = stringTable.length();
     }
     if ( stringTableTypes != "NULL" && !stringTableTypes.isNull() )
     {
-        psTableTypes    = stringTableTypes.utf16();
+        psTableTypes    = (SQLWCHAR*)stringTableTypes.utf16();
         nTableTypes     = stringTableTypes.length();
     }
 
@@ -483,26 +481,26 @@
     QString stringCatalog       = stringlist.at( 0 );
     QString stringSchema        = stringlist.at( 1 );
     QString stringTable         = stringlist.at( 2 );
-    QString stringTableTypes    = stringlist.at( 3 );
+    QString stringColumn        = stringlist.at( 3 );
 
     if ( stringCatalog != "NULL" && !stringCatalog.isNull() )
     {
-        psCatalog  = stringCatalog.utf16();
+        psCatalog  = (SQLWCHAR*)stringCatalog.utf16();
         nCatalog   = stringCatalog.length();
     }
     if ( stringSchema != "NULL" && !stringSchema.isNull() )
     {
-        psSchema    = stringSchema.utf16();
+        psSchema    = (SQLWCHAR*)stringSchema.utf16();
         nSchema     = stringSchema.length();
     }
     if ( stringTable != "NULL" && !stringTable.isNull() )
     {
-        psTable     = stringTable.utf16();
+        psTable     = (SQLWCHAR*)stringTable.utf16();
         nTable      = stringTable.length();
     }
     if ( stringColumn != "NULL" && !stringColumn.isNull() )
     {
-        psColumn    = stringColumn.utf16();
+        psColumn    = (SQLWCHAR*)stringColumn.utf16();
         nColumn     = stringColumn.length();
     }
 
@@ -540,7 +538,7 @@
 
     if ( SQLNumResultCols( hStm, &nCols ) != SQL_SUCCESS )
     {
-        if ( bVerbose ) doErrors( hEnv, hDbc, hStmt );
+        if ( bVerbose ) doErrors( hEnv, hDbc, hStm );
         *pstreamStdErr << QString( "[%1][%2][ERROR] Could not SQLNumResultCols."
).arg( __FILE__ ).arg( __LINE__ ) << endl;
         return false;
     }
@@ -596,8 +594,8 @@
 {
     SQLINTEGER  nColumn     = 0;
     SQLSMALLINT nColumns    = 0;
-    SQLWCHAR    sColumnName[MAX_DATA_WIDTH]  = "";   
-    QString     stringBuffer;
+    SQLWCHAR    sColumnName[MAX_DATA_WIDTH]  = L"";   
+    QString     stringFormatBuffer;
     QString     stringNameLine;
     SQLUINTEGER nChar;
 
@@ -609,35 +607,35 @@
 
     for ( nColumn = 1; nColumn <= nColumns; nColumn++ )
     {
-        if ( !SQL_SUCCEEDED( SQLColAttribute( hStm, nColumn, SQL_DESC_LABEL, sColumnName,
sizeof(sColumnName), NULL, NULL ) && bVerbose )  )
+        if ( !SQL_SUCCEEDED( SQLColAttribute( hStm, nColumn, SQL_DESC_LABEL, sColumnName,
sizeof(sColumnName), NULL, NULL ) ) && bVerbose )
             doErrors( NULL, NULL, hStm );
 
         /* SEP */
         stringSepLine += "+";
-        for ( nChar=0; nChar <= vectorOptimalDisplayWidth[nColumn]; nChar++ )
stringSepLine += "-";
+        for ( nChar=0; nChar <= vectorOptimalDisplayWidths[nColumn]; nChar++ )
stringSepLine += "-";
 
         /* HDR */
-//        stringNameLine += stringBuffer.sprintf( "| %-*.*s", nOptimalDisplayWidth,
nOptimalDisplayWidth, sColumnName );
-        stringNameLine += QString::sprintf( "| %-*.*s",
vectorOptimalDisplayWidth[nColumn], vectorOptimalDisplayWidth[nColumn], sColumnName );
+        stringNameLine += stringFormatBuffer.sprintf( "| %-*.*s",
vectorOptimalDisplayWidths[nColumn], vectorOptimalDisplayWidths[nColumn], sColumnName );
     }
     stringSepLine  += "+";
     stringNameLine += "|";
 
-    streamStdOut << stringSepLine << endl;
-    streamStdOut << stringNameLine << endl;
-    streamStdOut << stringSepLine << endl;
+    *pstreamStdOut << stringSepLine << endl;
+    *pstreamStdOut << stringNameLine << endl;
+    *pstreamStdOut << stringSepLine << endl;
 
     return true;
 }
 
-SQLINTEGER doBodyNormal()
+SQLINTEGER MYODBCShell::doBodyNormal()
 {
     SQLINTEGER  nColumn     = 0;
     SQLSMALLINT nColumns    = 0;
     SQLINTEGER  nIndicator  = 0;
-    SQLWCHAR    sColumnValue[MAX_DATA_WIDTH] = "";
+    SQLWCHAR    sColumnValue[MAX_DATA_WIDTH] = L"";
     SQLRETURN   nReturn                 = 0;
     SQLINTEGER  nRows                   = 0;
+    QString     stringFormatBuffer;
 
     if ( !SQL_SUCCEEDED( SQLNumResultCols( hStm, &nColumns ) ) )
         nColumns = -1;
@@ -652,7 +650,7 @@
             nReturn = SQLGetData( hStm, nColumn, SQL_C_CHAR, (SQLPOINTER)sColumnValue,
sizeof(sColumnValue), &nIndicator );
             if ( SQL_SUCCEEDED( nReturn ) && nIndicator != SQL_NULL_DATA )
             {
-                streamStdOut << QString::sprintf( "| %-*.*s",
vectorOptimalDisplayWidth[nColumn], vectorOptimalDisplayWidth[nColumn], QString(
sColumnValue ) );
+                *pstreamStdOut << stringFormatBuffer.sprintf( "| %-*.*s",
vectorOptimalDisplayWidths[nColumn], vectorOptimalDisplayWidths[nColumn], sColumnValue );
             }
             else if ( nReturn == SQL_ERROR )
             {
@@ -660,13 +658,13 @@
             }
             else
             {
-                streamStdOut << QString::sprintf( "| %-*s",
vectorOptimalDisplayWidth[nColumn], "" );
+                *pstreamStdOut << stringFormatBuffer.sprintf( "| %-*s",
vectorOptimalDisplayWidths[nColumn], "" );
             }
 
         } /* for columns */
 
         nRows++;
-        streamStdOut << "|" << endl;
+        *pstreamStdOut << "|" << endl;
         nReturn = SQLFetch( hStm );
 
     } /* while rows */
@@ -683,15 +681,15 @@
 {
     SQLINTEGER nRowsAffected = -1;
 
-    streamStdOut << stringSepLine << endl;
+    *pstreamStdOut << stringSepLine << endl;
 
     if ( SQLRowCount( hStm, &nRowsAffected ) != SQL_SUCCESS )
     {
         if ( bVerbose ) doErrors( hEnv, hDbc, hStm );
     }
 
-    streamStdOut << nRowsAffected << " rows affected" << endl;
-    streamStdOut << nRows << " rows fetched" << endl;
+    *pstreamStdOut << nRowsAffected << " rows affected" << endl;
+    *pstreamStdOut << nRows << " rows fetched" << endl;
 
     return true;
 }
@@ -699,10 +697,10 @@
 bool MYODBCShell::doHeaderHTMLTable()
 {
     SQLSMALLINT     nColumns = 0;
-    SQLWCHAR        sColumnName[MAX_DATA_WIDTH] = "";   
+    SQLWCHAR        sColumnName[MAX_DATA_WIDTH] = L"";   
 
-    streamStdOut << "<table BORDER>" << endl;
-    streamStdOut << "<tr BGCOLOR=#000099>" << endl;
+    *pstreamStdOut << "<table BORDER>" << endl;
+    *pstreamStdOut << "<tr BGCOLOR=#000099>" << endl;
 
     if ( !SQL_SUCCEEDED( SQLNumResultCols( hStm, &nColumns ) ) )
         nColumns = -1;
@@ -710,13 +708,13 @@
     for ( SQLINTEGER nColumn = 1; nColumn <= nColumns; nColumn++ )
     {
         SQLColAttribute( hStm, nColumn, SQL_DESC_LABEL, sColumnName, sizeof(sColumnName),
NULL, NULL );
-        streamStdOut << "<td>" << endl;
-        streamStdOut << "<font face=Arial,Helvetica><font
color=#FFFFFF>" << endl;
-        streamStdOut << QString( sColumnName ) << endl;
-        streamStdOut << "</font></font>" << endl;
-        streamStdOut << "</td>" << endl;
+        *pstreamStdOut << "<td>" << endl;
+        *pstreamStdOut << "<font face=Arial,Helvetica><font
color=#FFFFFF>" << endl;
+        *pstreamStdOut << QString::fromStdWString( sColumnName ) << endl;
+        *pstreamStdOut << "</font></font>" << endl;
+        *pstreamStdOut << "</td>" << endl;
     }
-    streamStdOut << "</tr>" << endl;
+    *pstreamStdOut << "</tr>" << endl;
 
     return true;
 }
@@ -732,37 +730,38 @@
 
     while ( SQLFetch( hStm ) != SQL_SUCCESS )
     {
-        streamStdOut << "<tr>" << endl;
+        *pstreamStdOut << "<tr>" << endl;
 
         for ( SQLINTEGER nColumn = 1; nColumn <= nColumns; nColumn++ )
         {
             SQLINTEGER nIndicator = 0;
-            SQLWCHAR   sColumnValue[MAX_DATA_WIDTH] = "";
+            SQLWCHAR   sColumnValue[MAX_DATA_WIDTH] = L"";
 
-            streamStdOut << "<td>" << endl;
-            streamStdOut << "<font face=Arial,Helvetica>" << endl;
+            *pstreamStdOut << "<td>" << endl;
+            *pstreamStdOut << "<font face=Arial,Helvetica>" << endl;
 
             nReturn = SQLGetData( hStm, nColumn, SQL_C_CHAR, (SQLPOINTER)sColumnValue,
sizeof(sColumnValue), &nIndicator );
             if ( SQL_SUCCEEDED( nReturn ) && nIndicator != SQL_NULL_DATA )
             {
-                streamStdOut << QString( sColumnValue ) << endl;
+//                *pstreamStdOut << QString::fromStdWString( sColumnValue )
<< endl;
+                *pstreamStdOut << sColumnValue;
             }
             else if ( nReturn == SQL_ERROR )
             {
-                streamStdOut << endl;
+                *pstreamStdOut << endl;
                 if ( bVerbose ) doErrors( NULL, NULL, hStm );
                 bReturn = false;
                 break;
             }
             else
-                streamStdOut << endl;
+                *pstreamStdOut << endl;
 
-            streamStdOut << "</font>" << endl;
-            streamStdOut << "</td>" << endl;
+            *pstreamStdOut << "</font>" << endl;
+            *pstreamStdOut << "</td>" << endl;
         }
         if ( !bReturn )
             break;
-        streamStdOut << "</tr>" << endl;
+        *pstreamStdOut << "</tr>" << endl;
     }
 
     return bReturn;
@@ -770,14 +769,14 @@
 
 bool MYODBCShell::doFooterHTMLTable()
 {
-    streamStdOut << "</table>" << endl;
+    *pstreamStdOut << "</table>" << endl;
     return true;
 }
 
 bool MYODBCShell::doHeaderDelimited()
 {
     SQLSMALLINT nColumns                     = 0;
-    SQLWCHAR    sColumnName[MAX_DATA_WIDTH]  = "";   
+    SQLWCHAR    sColumnName[MAX_DATA_WIDTH]  = L"";   
 
     if ( !SQL_SUCCEEDED( SQLNumResultCols( hStm, &nColumns ) ) )
         nColumns = -1;
@@ -785,11 +784,11 @@
     for ( SQLINTEGER nColumn = 1; nColumn <= nColumns; nColumn++ )
     {
         SQLColAttribute( hStm, nColumn, SQL_DESC_LABEL, sColumnName, sizeof(sColumnName),
NULL, NULL );
-        streamStdOut << sColumnName;
+        *pstreamStdOut << sColumnName;
         if ( nColumn < nColumns )
-            streamStdOut << cDelimiter;
+            *pstreamStdOut << cDelimiter;
     }
-    streamStdOut << endl;
+    *pstreamStdOut << endl;
 
     return true;
 }
@@ -808,18 +807,19 @@
         for ( SQLINTEGER nColumn = 1; nColumn <= nColumns; nColumn++ )
         {
             SQLINTEGER nIndicator = 0;
-            SQLWCHAR   sColumnValue[MAX_DATA_WIDTH] = "";
+            SQLWCHAR   sColumnValue[MAX_DATA_WIDTH] = L"";
 
             nReturn = SQLGetData( hStm, nColumn, SQL_C_CHAR, (SQLPOINTER)sColumnValue,
sizeof(sColumnValue), &nIndicator );
             if ( SQL_SUCCEEDED( nReturn ) && nIndicator != SQL_NULL_DATA )
             {
-                streamStdOut << QString( sColumnValue );
+//                *pstreamStdOut << QString::fromStdWString( sColumnValue );
+                *pstreamStdOut << sColumnValue;
                 if ( nColumn < nColumns )
-                    streamStdOut << cDelimiter;
+                    *pstreamStdOut << cDelimiter;
             }
             else if ( nReturn == SQL_ERROR )
             {
-                streamStdOut << endl;
+                *pstreamStdOut << endl;
                 if ( bVerbose ) doErrors( NULL, NULL, hStm );
                 bReturn = false;
                 break;
@@ -827,12 +827,12 @@
             else
             {
                 if ( nColumn < nColumns )
-                    streamStdOut << cDelimiter;
+                    *pstreamStdOut << cDelimiter;
             }
         }
         if ( !bReturn )
             break;
-        streamStdOut << endl;
+        *pstreamStdOut << endl;
     }
 
     return bReturn;
@@ -858,7 +858,7 @@
                                               &nTextLength )) )
         {
             sState[5] = '\0';
-            streamStdErr << "[" << sState << "]" << sMessageText
<< endl;
+            *pstreamStdErr << "[" << sState << "]" <<
sMessageText << endl;
             nRecord++;
         }
     }
@@ -869,14 +869,14 @@
         while ( SQL_SUCCEEDED(SQLGetDiagRec( SQL_HANDLE_DBC, 
                                              hDbc, 
                                              nRecord, 
-                                             szState,
+                                             sState,
                                              &nNativeError,
-                                             szMessageText,
+                                             sMessageText,
                                              SQL_MAX_MESSAGE_LENGTH,
                                              &nTextLength )) )
         {
-            szState[5] = '\0';
-            streamStdErr << "[" << sState << "]" << sMessageText
<< endl;
+            sState[5] = '\0';
+            *pstreamStdErr << "[" << sState << "]" <<
sMessageText << endl;
             nRecord++;
         }
     }
@@ -887,14 +887,14 @@
         while ( SQL_SUCCEEDED(SQLGetDiagRec( SQL_HANDLE_ENV, 
                                              hEnv, 
                                              nRecord, 
-                                             szState,
+                                             sState,
                                              &nNativeError,
-                                             szMessageText,
+                                             sMessageText,
                                              SQL_MAX_MESSAGE_LENGTH,
                                              &nTextLength )) )
         {
-            szState[5] = '\0';
-            streamStdErr << "[" << sState << "]" << sMessageText
<< endl;
+            sState[5] = '\0';
+            *pstreamStdErr << "[" << sState << "]" <<
sMessageText << endl;
             nRecord++;
         }
     }

Thread
Connector/ODBC 5 commit: r91 - MYODBCShellpharvey21 Apr