]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/db.cpp
restored accidentally removed code which deselects the previously selected button...
[wxWidgets.git] / src / common / db.cpp
index f99e9cff2cab07413c0a5f8d165be2f469bced0f..1cc07c08f1b7e729642c6f4859f86e99448b8a48 100644 (file)
@@ -1013,8 +1013,8 @@ bool wxDb::setConnectionOptions(void)
     if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
         return(DispAllErrors(henv, hdbc));
 
-    retcode = SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF);
-    retcode = SQLSetConnectOption(hdbc, SQL_OPT_TRACE, SQL_OPT_TRACE_OFF);
+    /* retcode = */ SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF);
+    /* retcode = */ SQLSetConnectOption(hdbc, SQL_OPT_TRACE, SQL_OPT_TRACE_OFF);
 //  SQLSetConnectOption(hdbc, SQL_TXN_ISOLATION, SQL_TXN_READ_COMMITTED);  // No dirty reads
 
     // By default, MS Sql Server closes cursors on commit and rollback.  The following
@@ -1026,7 +1026,7 @@ bool wxDb::setConnectionOptions(void)
     {
         const long SQL_PRESERVE_CURSORS = 1204L;
         const long SQL_PC_ON = 1L;
-        retcode = SQLSetConnectOption(hdbc, SQL_PRESERVE_CURSORS, SQL_PC_ON);
+        /* retcode = */ SQLSetConnectOption(hdbc, SQL_PRESERVE_CURSORS, SQL_PC_ON);
     }
 
     // Display the connection options to verify them
@@ -2164,24 +2164,27 @@ bool wxDb::ExecSql(const wxString &pSqlStmt)
 
 
 /********** wxDb::ExecSql() with column info **********/ 
-bool wxDb::ExecSqlGetInf(const wxString &pSqlStmt, wxDbColInf** columns, short& numcols)
+bool wxDb::ExecSql(const wxString &pSqlStmt, wxDbColInf** columns, short& numcols)
 {
     //execute the statement first
-    if (! ExecSql(pSqlStmt)) return false;
+    if (!ExecSql(pSqlStmt))
+        return false;
 
     SWORD noCols;
-    if (SQLNumResultCols (hstmt, &noCols) != SQL_SUCCESS)
+    if (SQLNumResultCols(hstmt, &noCols) != SQL_SUCCESS)
     {
         DispAllErrors(henv, hdbc, hstmt);
         return false;
     }
   
-    if (noCols == 0) return false;
-    else numcols = noCols;
+    if (noCols == 0)
+        return false;
+    else 
+        numcols = noCols;
       
     //  Get column information
     short colNum;
-    UCHAR name[DB_MAX_COLUMN_NAME_LEN+1];
+    wxChar name[DB_MAX_COLUMN_NAME_LEN+1];
     SWORD Sword;
     SDWORD Sdword;
     wxDbColInf* pColInf = new wxDbColInf[noCols];
@@ -2189,7 +2192,7 @@ bool wxDb::ExecSqlGetInf(const wxString &pSqlStmt, wxDbColInf** columns, short&
     //fill in column information (name, datatype)
     for (colNum = 0; colNum < noCols; colNum++) 
     {
-        if (SQLColAttributes(hstmt,colNum+1, SQL_COLUMN_NAME,
+        if (SQLColAttributes(hstmt, (UWORD)(colNum+1), SQL_COLUMN_NAME,
             name, sizeof(name),
             &Sword, &Sdword) != SQL_SUCCESS)
         {
@@ -2198,9 +2201,9 @@ bool wxDb::ExecSqlGetInf(const wxString &pSqlStmt, wxDbColInf** columns, short&
             return false;
         }
   
-        wxStrncpy(pColInf[colNum].colName, (const char*) name, DB_MAX_COLUMN_NAME_LEN);
+        wxStrncpy(pColInf[colNum].colName, name, DB_MAX_COLUMN_NAME_LEN);
         
-        if (SQLColAttributes(hstmt,colNum+1, SQL_COLUMN_TYPE,
+        if (SQLColAttributes(hstmt, (UWORD)(colNum+1), SQL_COLUMN_TYPE,
             NULL, 0, &Sword, &Sdword) != SQL_SUCCESS)
         {
             DispAllErrors(henv, hdbc, hstmt);
@@ -2210,43 +2213,42 @@ bool wxDb::ExecSqlGetInf(const wxString &pSqlStmt, wxDbColInf** columns, short&
         
         switch (Sdword)
         {
-        case SQL_VARCHAR:
-        case SQL_CHAR:
-            pColInf[colNum].dbDataType = DB_DATA_TYPE_VARCHAR;
-            break;
-  
-        case SQL_TINYINT:
-        case SQL_SMALLINT:
-        case SQL_INTEGER:
-        case SQL_BIT:
-            pColInf[colNum].dbDataType = DB_DATA_TYPE_INTEGER;
-            break;
-        case SQL_DOUBLE:
-        case SQL_DECIMAL:
-        case SQL_NUMERIC:
-        case SQL_FLOAT:
-        case SQL_REAL:
-            pColInf[colNum].dbDataType = DB_DATA_TYPE_FLOAT;
-            break;
-        case SQL_DATE:
-        case SQL_TIMESTAMP:
-            pColInf[colNum].dbDataType = DB_DATA_TYPE_DATE;
-            break;
-        case SQL_BINARY:
-            pColInf[colNum].dbDataType = DB_DATA_TYPE_BLOB;
-            break;
+            case SQL_VARCHAR:
+            case SQL_CHAR:
+                pColInf[colNum].dbDataType = DB_DATA_TYPE_VARCHAR;
+                break;
+            case SQL_TINYINT:
+            case SQL_SMALLINT:
+            case SQL_INTEGER:
+            case SQL_BIT:
+                pColInf[colNum].dbDataType = DB_DATA_TYPE_INTEGER;
+                break;
+            case SQL_DOUBLE:
+            case SQL_DECIMAL:
+            case SQL_NUMERIC:
+            case SQL_FLOAT:
+            case SQL_REAL:
+                pColInf[colNum].dbDataType = DB_DATA_TYPE_FLOAT;
+                break;
+            case SQL_DATE:
+            case SQL_TIMESTAMP:
+                pColInf[colNum].dbDataType = DB_DATA_TYPE_DATE;
+                break;
+            case SQL_BINARY:
+                pColInf[colNum].dbDataType = DB_DATA_TYPE_BLOB;
+                break;
 #ifdef __WXDEBUG__
-        default:
-            wxString errMsg;
-            errMsg.Printf(wxT("SQL Data type %d currently not supported by wxWindows"), Sdword);
-            wxLogDebug(errMsg,wxT("ODBC DEBUG MESSAGE"));
+            default:
+                wxString errMsg;
+                errMsg.Printf(wxT("SQL Data type %ld currently not supported by wxWidgets"), (long)Sdword);
+                wxLogDebug(errMsg,wxT("ODBC DEBUG MESSAGE"));
 #endif
         }
     }
  
     *columns = pColInf;
     return true;
-}  // wxDb::ExecSqlGetInf()
+}  // wxDb::ExecSql()
 
 /********** wxDb::GetNext()  **********/
 bool wxDb::GetNext(void)
@@ -2369,7 +2371,7 @@ int wxDb::GetKeyFields(const wxString &tableName, wxDbColInf* colInf, UWORD noCo
     }  // while
 
     tempStr.Trim();     // Get rid of any unneeded blanks
-    if (!tempStr.IsEmpty())
+    if (!tempStr.empty())
     {
         for (i=0; i<noCols; i++)
         {   // Find the Column name
@@ -2498,7 +2500,7 @@ wxDbColInf *wxDb::GetColumns(wxChar *tableName[], const wxChar *userID)
 
             // MySQL, SQLServer, and Access cannot accept a user name when looking up column names, so we
             // use the call below that leaves out the user name
-            if (!UserID.IsEmpty() &&
+            if (!UserID.empty() &&
                 Dbms() != dbmsMY_SQL &&
                 Dbms() != dbmsACCESS &&
                 Dbms() != dbmsMS_SQL_SERVER)
@@ -2653,7 +2655,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, UWORD *numCols, const wx
 
         // MySQL, SQLServer, and Access cannot accept a user name when looking up column names, so we
         // use the call below that leaves out the user name
-        if (!UserID.IsEmpty() &&
+        if (!UserID.empty() &&
             Dbms() != dbmsMY_SQL &&
             Dbms() != dbmsACCESS &&
             Dbms() != dbmsMS_SQL_SERVER)
@@ -2908,7 +2910,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, int *numCols, const wxCh
 
         // MySQL, SQLServer, and Access cannot accept a user name when looking up column names, so we
         // use the call below that leaves out the user name
-        if (!UserID.IsEmpty() &&
+        if (!UserID.empty() &&
             Dbms() != dbmsMY_SQL &&
             Dbms() != dbmsACCESS &&
             Dbms() != dbmsMS_SQL_SERVER)
@@ -2984,10 +2986,10 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, int *numCols, const wxCh
                         case SQL_CHAR:
                             colInf[colNo].dbDataType = DB_DATA_TYPE_VARCHAR;
                         break;
-
                         case SQL_TINYINT:
                         case SQL_SMALLINT:
                         case SQL_INTEGER:
+                        case SQL_BIT:
                             colInf[colNo].dbDataType = DB_DATA_TYPE_INTEGER;
                             break;
                         case SQL_DOUBLE:
@@ -2998,6 +3000,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, int *numCols, const wxCh
                             colInf[colNo].dbDataType = DB_DATA_TYPE_FLOAT;
                             break;
                         case SQL_DATE:
+                        case SQL_TIMESTAMP:
                             colInf[colNo].dbDataType = DB_DATA_TYPE_DATE;
                             break;
                         case SQL_BINARY:
@@ -3146,7 +3149,7 @@ int wxDb::GetColumnCount(const wxString &tableName, const wxChar *userID)
 
     // MySQL, SQLServer, and Access cannot accept a user name when looking up column names, so we
     // use the call below that leaves out the user name
-    if (!UserID.IsEmpty() &&
+    if (!UserID.empty() &&
         Dbms() != dbmsMY_SQL &&
         Dbms() != dbmsACCESS &&
         Dbms() != dbmsMS_SQL_SERVER)
@@ -3239,7 +3242,7 @@ wxDbInf *wxDb::GetCatalog(const wxChar *userID)
         SQLFreeStmt(hstmt, SQL_CLOSE);   // Close if Open
         tblNameSave.Empty();
 
-        if (!UserID.IsEmpty() &&
+        if (!UserID.empty() &&
             Dbms() != dbmsMY_SQL &&
             Dbms() != dbmsACCESS &&
             Dbms() != dbmsMS_SQL_SERVER)
@@ -3344,7 +3347,7 @@ bool wxDb::Catalog(const wxChar *userID, const wxString &fileName)
     wxString UserID;
     convertUserID(userID,UserID);
 
-    if (!UserID.IsEmpty() &&
+    if (!UserID.empty() &&
         Dbms() != dbmsMY_SQL &&
         Dbms() != dbmsACCESS &&
         Dbms() != dbmsINTERBASE &&
@@ -3475,7 +3478,7 @@ bool wxDb::TableExists(const wxString &tableName, const wxChar *userID, const wx
 
     // Some databases cannot accept a user name when looking up table names,
     // so we use the call below that leaves out the user name
-    if (!UserID.IsEmpty() &&
+    if (!UserID.empty() &&
         Dbms() != dbmsMY_SQL &&
         Dbms() != dbmsACCESS &&
         Dbms() != dbmsMS_SQL_SERVER &&
@@ -3545,7 +3548,7 @@ bool wxDb::TablePrivileges(const wxString &tableName, const wxString &priv, cons
 
     // Some databases cannot accept a user name when looking up table names,
     // so we use the call below that leaves out the user name
-    if (!Schema.IsEmpty() &&
+    if (!Schema.empty() &&
         Dbms() != dbmsMY_SQL &&
         Dbms() != dbmsACCESS &&
         Dbms() != dbmsMS_SQL_SERVER)
@@ -4289,9 +4292,11 @@ bool wxDbGetDataSource(HENV henv, wxChar *Dsn, SWORD DsnMaxLength, wxChar *DsDes
  */
 {
     SWORD cb1,cb2;
+    SWORD lengthDsn = (SWORD)(DsnMaxLength*sizeof(wxChar));
+    SWORD lengthDsDesc = (SWORD)(DsDescMaxLength*sizeof(wxChar));
 
-    if (SQLDataSources(henv, direction, (SQLTCHAR FAR *) Dsn, DsnMaxLength*sizeof(wxChar), &cb1,
-                             (SQLTCHAR FAR *) DsDesc, DsDescMaxLength*sizeof(wxChar), &cb2) == SQL_SUCCESS)
+    if (SQLDataSources(henv, direction, (SQLTCHAR FAR *) Dsn, lengthDsn, &cb1,
+                       (SQLTCHAR FAR *) DsDesc, lengthDsDesc, &cb2) == SQL_SUCCESS)
         return true;
     else
         return false;