X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e04507df82af4755d7f1529b37be844058b6c2c1..b9efe021b554fa3967d1442cf758435c5cd5ae8f:/src/common/db.cpp diff --git a/src/common/db.cpp b/src/common/db.cpp index 2f19576485..4affce0b64 100644 --- a/src/common/db.cpp +++ b/src/common/db.cpp @@ -179,7 +179,7 @@ bool wxDbConnectInf::AllocHenv() // Initialize the ODBC Environment for Database Operations if (SQLAllocEnv(&Henv) != SQL_SUCCESS) { - wxLogDebug(wxT("A problem occured while trying to get a connection to the data source")); + wxLogDebug(wxT("A problem occurred while trying to get a connection to the data source")); return false; } @@ -576,9 +576,10 @@ const wxChar *wxDb::convertUserID(const wxChar *userID, wxString &UserID) || Dbms() == dbmsXBASE_SEQUITER ) UserID.Empty(); - // Oracle user names may only be in uppercase, so force - // the name to uppercase - if (Dbms() == dbmsORACLE) + // Some databases require user names to be specified in uppercase, + // so force the name to uppercase + if ((Dbms() == dbmsORACLE) || + (Dbms() == dbmsMAXDB)) UserID = UserID.Upper(); return UserID.c_str(); @@ -803,6 +804,11 @@ bool wxDb::open(bool failOnDataTypeUnsupported) bool wxDb::Open(const wxString& inConnectStr, bool failOnDataTypeUnsupported) { wxASSERT(inConnectStr.Length()); + return Open(inConnectStr, NULL, failOnDataTypeUnsupported); +} + +bool wxDb::Open(const wxString& inConnectStr, SQLHWND parentWnd, bool failOnDataTypeUnsupported) +{ dsn = wxT(""); uid = wxT(""); authStr = wxT(""); @@ -831,7 +837,7 @@ bool wxDb::Open(const wxString& inConnectStr, bool failOnDataTypeUnsupported) inConnectionStr = inConnectStr; - retcode = SQLDriverConnect(hdbc, NULL, (SQLTCHAR FAR *)inConnectionStr.c_str(), + retcode = SQLDriverConnect(hdbc, parentWnd, (SQLTCHAR FAR *)inConnectionStr.c_str(), (SWORD)inConnectionStr.Length(), (SQLTCHAR FAR *)outConnectBuffer, sizeof(outConnectBuffer), &outConnectBufferLen, SQL_DRIVER_COMPLETE ); @@ -1775,25 +1781,21 @@ bool wxDb::DispAllErrors(HENV aHenv, HDBC aHdbc, HSTMT aHstmt) /* * This function is called internally whenever an error condition prevents the user's * request from being executed. This function will query the datasource as to the - * actual error(s) that just occured on the previous request of the datasource. + * actual error(s) that just occurred on the previous request of the datasource. * * The function will retrieve each error condition from the datasource and * Printf the codes/text values into a string which it then logs via logError(). * If in DBDEBUG_CONSOLE mode, the constructed string will be displayed in the console * window and program execution will be paused until the user presses a key. * - * This function always returns a false, so that functions which call this function + * This function always returns false, so that functions which call this function * can have a line like "return (DispAllErrors(henv, hdbc));" to indicate the failure - * of the users request, so that the calling code can then process the error msg log + * of the user's request, so that the calling code can then process the error message log. */ { wxString odbcErrMsg; -#ifdef __VMS - while (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, (SQLINTEGER *) &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS) -#else - while (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, (long*) &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS) -#endif + while (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS) { odbcErrMsg.Printf(wxT("SQL State = %s\nNative Error Code = %li\nError Message = %s\n"), sqlState, nativeError, errorMsg); logError(odbcErrMsg, sqlState); @@ -1820,11 +1822,7 @@ bool wxDb::DispAllErrors(HENV aHenv, HDBC aHdbc, HSTMT aHstmt) /********** wxDb::GetNextError() **********/ bool wxDb::GetNextError(HENV aHenv, HDBC aHdbc, HSTMT aHstmt) { -#ifdef __VMS - if (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, (SQLINTEGER *) &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS) -#else - if (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, (long*) &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS) -#endif + if (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS) return true; else return false; @@ -2509,7 +2507,7 @@ wxDbColInf *wxDb::GetColumns(wxChar *tableName[], const wxChar *userID) * 1) The last array element of the tableName[] argument must be zero (null). * This is how the end of the array is detected. * 2) This function returns an array of wxDbColInf structures. If no columns - * were found, or an error occured, this pointer will be zero (null). THE + * were found, or an error occurred, this pointer will be zero (null). THE * CALLING FUNCTION IS RESPONSIBLE FOR DELETING THE MEMORY RETURNED WHEN IT * IS FINISHED WITH IT. i.e. * @@ -2599,7 +2597,7 @@ wxDbColInf *wxDb::GetColumns(wxChar *tableName[], const wxChar *userID) NULL, 0); // All columns } if (retcode != SQL_SUCCESS) - { // Error occured, abort + { // Error occurred, abort DispAllErrors(henv, hdbc, hstmt); if (colInf) delete [] colInf; @@ -2657,7 +2655,7 @@ wxDbColInf *wxDb::GetColumns(wxChar *tableName[], const wxChar *userID) } } if (retcode != SQL_NO_DATA_FOUND) - { // Error occured, abort + { // Error occurred, abort DispAllErrors(henv, hdbc, hstmt); if (colInf) delete [] colInf; @@ -2755,7 +2753,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, UWORD *numCols, const wx NULL, 0); // All columns } if (retcode != SQL_SUCCESS) - { // Error occured, abort + { // Error occurred, abort DispAllErrors(henv, hdbc, hstmt); if (colInf) delete [] colInf; @@ -2831,7 +2829,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, UWORD *numCols, const wx } } if (retcode != SQL_NO_DATA_FOUND) - { // Error occured, abort + { // Error occurred, abort DispAllErrors(henv, hdbc, hstmt); if (colInf) delete [] colInf; @@ -2860,7 +2858,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, UWORD *numCols, const wx /* BJO 20000503 These are tentative new GetColumns members which should be more database - independant and which always returns the columns in the order they were + independent and which always returns the columns in the order they were created. - The first one (wxDbColInf *wxDb::GetColumns(wxChar *tableName[], const @@ -3011,7 +3009,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, int *numCols, const wxCh NULL, 0); // All columns } if (retcode != SQL_SUCCESS) - { // Error occured, abort + { // Error occurred, abort DispAllErrors(henv, hdbc, hstmt); if (colInf) delete [] colInf; @@ -3107,7 +3105,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, int *numCols, const wxCh } } if (retcode != SQL_NO_DATA_FOUND) - { // Error occured, abort + { // Error occurred, abort DispAllErrors(henv, hdbc, hstmt); if (colInf) delete [] colInf; @@ -3259,7 +3257,7 @@ int wxDb::GetColumnCount(const wxString &tableName, const wxChar *userID) NULL, 0); // All columns } if (retcode != SQL_SUCCESS) - { // Error occured, abort + { // Error occurred, abort DispAllErrors(henv, hdbc, hstmt); SQLFreeStmt(hstmt, SQL_CLOSE); return(-1); @@ -3270,7 +3268,7 @@ int wxDb::GetColumnCount(const wxString &tableName, const wxChar *userID) noCols++; if (retcode != SQL_NO_DATA_FOUND) - { // Error occured, abort + { // Error occurred, abort DispAllErrors(henv, hdbc, hstmt); SQLFreeStmt(hstmt, SQL_CLOSE); return(-1); @@ -3291,7 +3289,7 @@ wxDbInf *wxDb::GetCatalog(const wxChar *userID) * -- : uses SQLTables and fills pTableInf; ------ * -- : pColInf is set to NULL and numCols to 0; ------ * -- : returns pDbInf (wxDbInf) ------ - * -- - if unsuccesfull (pDbInf == NULL) ------ + * -- - if unsuccessful (pDbInf == NULL) ------ * -- : pColInf can be filled with GetColumns(..); ------ * -- : numCols can be filled with GetColumnCount(..); ------ * --------------------------------------------------------------------- @@ -3428,7 +3426,7 @@ bool wxDb::Catalog(const wxChar *userID, const wxString &fileName) wxChar typeName[30+1]; SDWORD precision, length; - FILE *fp = wxFopen(fileName.c_str,wxT("wt")); + FILE *fp = wxFopen(fileName.c_str(),wxT("wt")); if (fp == NULL) return false; @@ -3949,6 +3947,8 @@ wxDBMS wxDb::Dbms(void) return((wxDBMS)(dbmsType = dbmsXBASE_SEQUITER)); if (!wxStricmp(baseName,wxT("MySQL"))) return((wxDBMS)(dbmsType = dbmsMY_SQL)); + if (!wxStricmp(baseName,wxT("MaxDB"))) + return((wxDBMS)(dbmsType = dbmsMAXDB)); baseName[3] = 0; if (!wxStricmp(baseName,wxT("DB2"))) @@ -4333,7 +4333,7 @@ int wxDbCreateDataSource(const wxString &driverName, const wxString &dsn, const // embedded nulls in strings setupStr.Printf(wxT("DSN=%s%cDescription=%s%cDefaultDir=%s%c"),dsn,2,description,2,defDir,2); - // Replace the separator from above with the '\0' seperator needed + // Replace the separator from above with the '\0' separator needed // by the SQLConfigDataSource() function int k; do @@ -4415,7 +4415,7 @@ bool wxDbGetDataSource(HENV henv, wxChar *Dsn, SWORD DsnMaxLength, wxChar *DsDes ******************************************************************** * * The following functions are all DEPRECATED and are included for - * backward compatability reasons only + * backward compatibility reasons only * ******************************************************************** ********************************************************************/