]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/db.cpp
Applied patch [ 1117207 ] changed the test for SQL_C_WCHAR
[wxWidgets.git] / src / common / db.cpp
index 35ff3bd14595facb05ab1315b46fc85cd1a65dbf..746c65ce0b7915bf2dedecf1baa9ce6560be7008 100644 (file)
@@ -85,7 +85,7 @@ static wxString SQLLOGfn = SQL_LOG_FILENAME;
 // will overwrite the errors of the previously destroyed wxDb object in
 // this variable.  NOTE: This occurs during a CLOSE, not a FREEing of the
 // connection
 // will overwrite the errors of the previously destroyed wxDb object in
 // this variable.  NOTE: This occurs during a CLOSE, not a FREEing of the
 // connection
-wxChar DBerrorList[DB_MAX_ERROR_HISTORY][DB_MAX_ERROR_MSG_LEN];
+wxChar DBerrorList[DB_MAX_ERROR_HISTORY][DB_MAX_ERROR_MSG_LEN+1];
 
 
 // This type defines the return row-struct form
 
 
 // This type defines the return row-struct form
@@ -287,8 +287,16 @@ int wxDbColFor::Format(int Nation, int dbDataType, SWORD sqlDataType,
 
     if (i_dbDataType == 0)                                        // Filter unsupported dbDataTypes
     {
 
     if (i_dbDataType == 0)                                        // Filter unsupported dbDataTypes
     {
-        if ((i_sqlDataType == SQL_VARCHAR) || (i_sqlDataType == SQL_LONGVARCHAR) ||
-            (i_sqlDataType == SQL_WCHAR) || (i_sqlDataType == SQL_WVARCHAR))
+        if ((i_sqlDataType == SQL_VARCHAR)
+#if wxUSE_UNICODE
+    #if defined(SQL_WCHAR)
+            || (i_sqlDataType == SQL_WCHAR) 
+    #endif
+    #if defined(SQL_WVARCHAR)
+            || (i_sqlDataType == SQL_WVARCHAR)
+    #endif
+#endif
+            || (i_sqlDataType == SQL_LONGVARCHAR))
             i_dbDataType = DB_DATA_TYPE_VARCHAR;
         if ((i_sqlDataType == SQL_C_DATE) || (i_sqlDataType == SQL_C_TIMESTAMP))
             i_dbDataType = DB_DATA_TYPE_DATE;
             i_dbDataType = DB_DATA_TYPE_VARCHAR;
         if ((i_sqlDataType == SQL_C_DATE) || (i_sqlDataType == SQL_C_TIMESTAMP))
             i_dbDataType = DB_DATA_TYPE_DATE;
@@ -579,13 +587,13 @@ const wxChar *wxDb::convertUserID(const wxChar *userID, wxString &UserID)
 
 bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
 {
 
 bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
 {
-    int iIndex;
+    size_t iIndex;
 
     // These are the possible SQL types we check for use against the datasource we are connected
     // to for the purpose of determining which data type to use for the basic character strings
     // column types
     //
 
     // These are the possible SQL types we check for use against the datasource we are connected
     // to for the purpose of determining which data type to use for the basic character strings
     // column types
     //
-    // NOTE: The first type in this enumeration that is determined to be supported by the 
+    // NOTE: The first type in this enumeration that is determined to be supported by the
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlCharTypes[] = {
 #if wxUSE_UNICODE && defined(SQL_WVARCHAR)
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlCharTypes[] = {
 #if wxUSE_UNICODE && defined(SQL_WVARCHAR)
@@ -602,7 +610,7 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
     // to for the purpose of determining which data type to use for the basic non-floating point
     // column types
     //
     // to for the purpose of determining which data type to use for the basic non-floating point
     // column types
     //
-    // NOTE: The first type in this enumeration that is determined to be supported by the 
+    // NOTE: The first type in this enumeration that is determined to be supported by the
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlIntegerTypes[] = {
         SQL_INTEGER
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlIntegerTypes[] = {
         SQL_INTEGER
@@ -612,7 +620,7 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
     // to for the purpose of determining which data type to use for the basic floating point number
     // column types
     //
     // to for the purpose of determining which data type to use for the basic floating point number
     // column types
     //
-    // NOTE: The first type in this enumeration that is determined to be supported by the 
+    // NOTE: The first type in this enumeration that is determined to be supported by the
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlFloatTypes[] = {
         SQL_DOUBLE,
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlFloatTypes[] = {
         SQL_DOUBLE,
@@ -625,7 +633,7 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
     // These are the possible SQL types we check for use agains the datasource we are connected
     // to for the purpose of determining which data type to use for the date/time column types
     //
     // These are the possible SQL types we check for use agains the datasource we are connected
     // to for the purpose of determining which data type to use for the date/time column types
     //
-    // NOTE: The first type in this enumeration that is determined to be supported by the 
+    // NOTE: The first type in this enumeration that is determined to be supported by the
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlDateTypes[] = {
         SQL_TIMESTAMP,
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlDateTypes[] = {
         SQL_TIMESTAMP,
@@ -638,7 +646,7 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
     // These are the possible SQL types we check for use agains the datasource we are connected
     // to for the purpose of determining which data type to use for the BLOB column types.
     //
     // These are the possible SQL types we check for use agains the datasource we are connected
     // to for the purpose of determining which data type to use for the BLOB column types.
     //
-    // NOTE: The first type in this enumeration that is determined to be supported by the 
+    // NOTE: The first type in this enumeration that is determined to be supported by the
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlBlobTypes[] = {
         SQL_LONGVARBINARY,
     //       datasource/driver is the one that will be used.
     SWORD PossibleSqlBlobTypes[] = {
         SQL_LONGVARBINARY,
@@ -691,8 +699,8 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
     if (!getDbInfo(failOnDataTypeUnsupported))
         return false;
 
     if (!getDbInfo(failOnDataTypeUnsupported))
         return false;
 
-    // --------------- Varchar - (Variable length character string) --------------- 
-    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlCharTypes) && 
+    // --------------- Varchar - (Variable length character string) ---------------
+    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlCharTypes) &&
                      !getDataTypeInfo(PossibleSqlCharTypes[iIndex], typeInfVarchar); ++iIndex)
     {}
 
                      !getDataTypeInfo(PossibleSqlCharTypes[iIndex], typeInfVarchar); ++iIndex)
     {}
 
@@ -701,8 +709,8 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
     else if (failOnDataTypeUnsupported)
         return false;
 
     else if (failOnDataTypeUnsupported)
         return false;
 
-    // --------------- Float --------------- 
-    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlFloatTypes) && 
+    // --------------- Float ---------------
+    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlFloatTypes) &&
                      !getDataTypeInfo(PossibleSqlFloatTypes[iIndex], typeInfFloat); ++iIndex)
     {}
 
                      !getDataTypeInfo(PossibleSqlFloatTypes[iIndex], typeInfFloat); ++iIndex)
     {}
 
@@ -712,7 +720,7 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
         return false;
 
     // --------------- Integer -------------
         return false;
 
     // --------------- Integer -------------
-    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlIntegerTypes) && 
+    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlIntegerTypes) &&
                      !getDataTypeInfo(PossibleSqlIntegerTypes[iIndex], typeInfInteger); ++iIndex)
     {}
 
                      !getDataTypeInfo(PossibleSqlIntegerTypes[iIndex], typeInfInteger); ++iIndex)
     {}
 
@@ -731,8 +739,8 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
             typeInfInteger.FsqlType = typeInfFloat.FsqlType;
     }
 
             typeInfInteger.FsqlType = typeInfFloat.FsqlType;
     }
 
-    // --------------- Date/Time --------------- 
-    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlDateTypes) && 
+    // --------------- Date/Time ---------------
+    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlDateTypes) &&
                      !getDataTypeInfo(PossibleSqlDateTypes[iIndex], typeInfDate); ++iIndex)
     {}
 
                      !getDataTypeInfo(PossibleSqlDateTypes[iIndex], typeInfDate); ++iIndex)
     {}
 
@@ -741,8 +749,8 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported)
     else if (failOnDataTypeUnsupported)
         return false;
 
     else if (failOnDataTypeUnsupported)
         return false;
 
-    // --------------- BLOB --------------- 
-    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlBlobTypes) && 
+    // --------------- BLOB ---------------
+    for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlBlobTypes) &&
                      !getDataTypeInfo(PossibleSqlBlobTypes[iIndex], typeInfBlob); ++iIndex)
     {}
 
                      !getDataTypeInfo(PossibleSqlBlobTypes[iIndex], typeInfBlob); ++iIndex)
     {}
 
@@ -1860,7 +1868,7 @@ void wxDb::logError(const wxString &errMsg, const wxString &SQLState)
     if (++pLast == DB_MAX_ERROR_HISTORY)
     {
         int i;
     if (++pLast == DB_MAX_ERROR_HISTORY)
     {
         int i;
-        for (i = 0; i < DB_MAX_ERROR_HISTORY; i++)
+        for (i = 0; i < DB_MAX_ERROR_HISTORY-1; i++)
             wxStrcpy(errorList[i], errorList[i+1]);
         pLast--;
     }
             wxStrcpy(errorList[i], errorList[i+1]);
         pLast--;
     }
@@ -2272,8 +2280,14 @@ bool wxDb::ExecSql(const wxString &pSqlStmt, wxDbColInf** columns, short& numcol
 
         switch (Sdword)
         {
 
         switch (Sdword)
         {
+#if wxUSE_UNICODE
+    #if defined(SQL_WCHAR)
             case SQL_WCHAR:
             case SQL_WCHAR:
+    #endif
+    #if defined(SQL_WVARCHAR)
             case SQL_WVARCHAR:
             case SQL_WVARCHAR:
+    #endif
+#endif
             case SQL_VARCHAR:
             case SQL_CHAR:
                 pColInf[colNum].dbDataType = DB_DATA_TYPE_VARCHAR;
             case SQL_VARCHAR:
             case SQL_CHAR:
                 pColInf[colNum].dbDataType = DB_DATA_TYPE_VARCHAR;
@@ -3049,8 +3063,14 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, int *numCols, const wxCh
                     // Get the intern datatype
                     switch (colInf[colNo].sqlDataType)
                     {
                     // Get the intern datatype
                     switch (colInf[colNo].sqlDataType)
                     {
+#if wxUSE_UNICODE
+    #if defined(SQL_WCHAR)
                         case SQL_WCHAR:
                         case SQL_WCHAR:
+    #endif
+    #if defined(SQL_WVARCHAR)
                         case SQL_WVARCHAR:
                         case SQL_WVARCHAR:
+    #endif
+#endif
                         case SQL_VARCHAR:
                         case SQL_CHAR:
                             colInf[colNo].dbDataType = DB_DATA_TYPE_VARCHAR;
                         case SQL_VARCHAR:
                         case SQL_CHAR:
                             colInf[colNo].dbDataType = DB_DATA_TYPE_VARCHAR;