X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/362a97bf562599ffed187628b075259be52be5c8..92850d6b2ff6072f4801152fd6bfdb7263715ec0:/src/common/db.cpp?ds=sidebyside diff --git a/src/common/db.cpp b/src/common/db.cpp index 35ff3bd145..746c65ce0b 100644 --- a/src/common/db.cpp +++ b/src/common/db.cpp @@ -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 -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 @@ -287,8 +287,16 @@ int wxDbColFor::Format(int Nation, int dbDataType, SWORD sqlDataType, 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; @@ -579,13 +587,13 @@ const wxChar *wxDb::convertUserID(const wxChar *userID, wxString &UserID) 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 // - // 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) @@ -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 // - // 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 @@ -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 // - // 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, @@ -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 // - // 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, @@ -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. // - // 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, @@ -691,8 +699,8 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported) 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) {} @@ -701,8 +709,8 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported) else if (failOnDataTypeUnsupported) return false; - // --------------- Float --------------- - for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlFloatTypes) && + // --------------- Float --------------- + for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlFloatTypes) && !getDataTypeInfo(PossibleSqlFloatTypes[iIndex], typeInfFloat); ++iIndex) {} @@ -712,7 +720,7 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported) return false; // --------------- Integer ------------- - for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlIntegerTypes) && + for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlIntegerTypes) && !getDataTypeInfo(PossibleSqlIntegerTypes[iIndex], typeInfInteger); ++iIndex) {} @@ -731,8 +739,8 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported) 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) {} @@ -741,8 +749,8 @@ bool wxDb::determineDataTypes(bool failOnDataTypeUnsupported) else if (failOnDataTypeUnsupported) return false; - // --------------- BLOB --------------- - for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlBlobTypes) && + // --------------- BLOB --------------- + for (iIndex = 0; iIndex < WXSIZEOF(PossibleSqlBlobTypes) && !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; - 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--; } @@ -2272,8 +2280,14 @@ bool wxDb::ExecSql(const wxString &pSqlStmt, wxDbColInf** columns, short& numcol switch (Sdword) { +#if wxUSE_UNICODE + #if defined(SQL_WCHAR) case SQL_WCHAR: + #endif + #if defined(SQL_WVARCHAR) case SQL_WVARCHAR: + #endif +#endif 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) { +#if wxUSE_UNICODE + #if defined(SQL_WCHAR) case SQL_WCHAR: + #endif + #if defined(SQL_WVARCHAR) case SQL_WVARCHAR: + #endif +#endif case SQL_VARCHAR: case SQL_CHAR: colInf[colNo].dbDataType = DB_DATA_TYPE_VARCHAR;