X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/882fc8a922b52668732e0427131e66dae33a86d6..1971d23c57b3c582f32d05704914ad902ec76fa5:/src/common/dbtable.cpp diff --git a/src/common/dbtable.cpp b/src/common/dbtable.cpp index 47e31c9f00..866ade00f3 100644 --- a/src/common/dbtable.cpp +++ b/src/common/dbtable.cpp @@ -44,7 +44,9 @@ #include "wx/object.h" #include "wx/list.h" #include "wx/utils.h" - #include "wx/msgdlg.h" + #if wxUSE_GUI + #include "wx/msgdlg.h" + #endif #include "wx/log.h" #endif #include "wx/filefn.h" @@ -91,14 +93,14 @@ bool wxDbColDef::Initialize() SqlCtype = SQL_C_LONG; PtrDataObj = NULL; SzDataObj = 0; - KeyField = false; - Updateable = false; - InsertAllowed = false; - DerivedCol = false; + KeyField = FALSE; + Updateable = FALSE; + InsertAllowed = FALSE; + DerivedCol = FALSE; CbValue = 0; - Null = false; + Null = FALSE; - return true; + return TRUE; } // wxDbColDef::Initialize() @@ -150,9 +152,9 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num where.Empty(); // Where clause orderBy.Empty(); // Order By clause from.Empty(); // From clause - selectForUpdate = false; // SELECT ... FOR UPDATE; Indicates whether to include the FOR UPDATE phrase + selectForUpdate = FALSE; // SELECT ... FOR UPDATE; Indicates whether to include the FOR UPDATE phrase queryOnly = qryOnly; - insertable = true; + insertable = TRUE; tablePath.Empty(); tableName.Empty(); queryTableName.Empty(); @@ -161,21 +163,21 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num wxASSERT(pDb); if (!pDb) - return false; + return FALSE; tableName = tblName; // Table Name if (tblPath.Length()) tablePath = tblPath; // Table Path - used for dBase files else tablePath.Empty(); - + if (qryTblName.Length()) // Name of the table/view to query queryTableName = qryTblName; else queryTableName = tblName; - + pDb->incrementTableCount(); - + wxString s; tableID = ++lastTableID; s.Printf(wxT("wxDbTable constructor (%-20s) tableID:[%6lu] pDb:[%p]"), tblName.c_str(), tableID, pDb); @@ -188,17 +190,17 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num tableInUse->pDb = pDb; TablesInUse.Append(tableInUse); #endif - + pDb->WriteSqlLog(s); - + // Grab the HENV and HDBC from the wxDb object henv = pDb->GetHENV(); hdbc = pDb->GetHDBC(); - + // Allocate space for column definitions if (noCols) colDefs = new wxDbColDef[noCols]; // Points to the first column definition - + // Allocate statement handles for the table if (!queryOnly) { @@ -215,12 +217,12 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num // Allocate a separate statement handle for internal use if (SQLAllocStmt(hdbc, &hstmtInternal) != SQL_SUCCESS) pDb->DispAllErrors(henv, hdbc); - + // Set the cursor type for the statement handles cursorType = SQL_CURSOR_STATIC; - + if (SQLSetStmtOption(hstmtInternal, SQL_CURSOR_TYPE, cursorType) != SQL_SUCCESS) - { + { // Check to see if cursor type is supported pDb->GetNextError(henv, hdbc, hstmtInternal); if (! wxStrcmp(pDb->sqlState, wxT("01S02"))) // Option Value Changed @@ -258,7 +260,7 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num { // Should never happen pDb->GetNextError(henv, hdbc, hstmtInternal); - return false; + return FALSE; } } } @@ -272,7 +274,7 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num else cout << wxT("Cursor Type set to STATIC") << endl << endl; #endif - + if (!queryOnly) { // Set the cursor type for the INSERT statement handle @@ -285,13 +287,13 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num if (SQLSetStmtOption(hstmtUpdate, SQL_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY) != SQL_SUCCESS) pDb->DispAllErrors(henv, hdbc, hstmtUpdate); } - + // Make the default cursor the active cursor - hstmtDefault = GetNewCursor(false,false); + hstmtDefault = GetNewCursor(FALSE,FALSE); wxASSERT(hstmtDefault); hstmt = *hstmtDefault; - return true; + return TRUE; } // wxDbTable::initialize() @@ -308,8 +310,8 @@ void wxDbTable::cleanup() #ifdef __WXDEBUG__ if (tableID) { - TablesInUse.DeleteContents(true); - bool found = false; + TablesInUse.DeleteContents(TRUE); + bool found = FALSE; wxNode *pNode; pNode = TablesInUse.First(); @@ -317,7 +319,7 @@ void wxDbTable::cleanup() { if (((wxTablesInUse *)pNode->Data())->tableID == tableID) { - found = true; + found = TRUE; if (!TablesInUse.DeleteNode(pNode)) wxLogDebug (s,wxT("Unable to delete node!")); } @@ -402,12 +404,12 @@ bool wxDbTable::bindParams(bool forUpdate) { wxASSERT(!queryOnly); if (queryOnly) - return(false); - + return(FALSE); + SWORD fSqlType = 0; UDWORD precision = 0; SWORD scale = 0; - + // Bind each column of the table that should be bound // to a parameter marker int i; @@ -449,7 +451,7 @@ bool wxDbTable::bindParams(bool forUpdate) case DB_DATA_TYPE_FLOAT: fSqlType = pDb->GetTypeInfFloat().FsqlType; precision = pDb->GetTypeInfFloat().Precision; - scale = pDb->GetTypeInfFloat().MaximumScale; + scale = pDb->GetTypeInfFloat().MaximumScale; // SQL Sybase Anywhere v5.5 returned a negative number for the // MaxScale. This caused ODBC to kick out an error on ibscale. // I check for this here and set the scale = precision. @@ -482,7 +484,7 @@ bool wxDbTable::bindParams(bool forUpdate) if (forUpdate) { if (SQLBindParameter(hstmtUpdate, colNo++, SQL_PARAM_INPUT, colDefs[i].SqlCtype, - fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj, + fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj, precision+1, &colDefs[i].CbValue) != SQL_SUCCESS) { return(pDb->DispAllErrors(henv, hdbc, hstmtUpdate)); @@ -491,16 +493,16 @@ bool wxDbTable::bindParams(bool forUpdate) else { if (SQLBindParameter(hstmtInsert, colNo++, SQL_PARAM_INPUT, colDefs[i].SqlCtype, - fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj, + fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj, precision+1,&colDefs[i].CbValue) != SQL_SUCCESS) { return(pDb->DispAllErrors(henv, hdbc, hstmtInsert)); } } } - + // Completed successfully - return(true); + return(TRUE); } // wxDbTable::bindParams() @@ -508,14 +510,14 @@ bool wxDbTable::bindParams(bool forUpdate) /********** wxDbTable::bindInsertParams() **********/ bool wxDbTable::bindInsertParams(void) { - return bindParams(false); + return bindParams(FALSE); } // wxDbTable::bindInsertParams() /********** wxDbTable::bindUpdateParams() **********/ bool wxDbTable::bindUpdateParams(void) { - return bindParams(true); + return bindParams(TRUE); } // wxDbTable::bindUpdateParams() @@ -534,7 +536,7 @@ bool wxDbTable::bindCols(HSTMT cursor) } // Completed successfully - return(true); + return(TRUE); } // wxDbTable::bindCols() @@ -554,7 +556,7 @@ bool wxDbTable::getRec(UWORD fetchType) if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { if (retcode == SQL_NO_DATA_FOUND) - return(false); + return(FALSE); else return(pDb->DispAllErrors(henv, hdbc, hstmt)); } @@ -574,7 +576,7 @@ bool wxDbTable::getRec(UWORD fetchType) if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { if (retcode == SQL_NO_DATA_FOUND) - return(false); + return(FALSE); else return(pDb->DispAllErrors(henv, hdbc, hstmt)); } @@ -589,7 +591,7 @@ bool wxDbTable::getRec(UWORD fetchType) } // Completed successfully - return(true); + return(TRUE); } // wxDbTable::getRec() @@ -607,7 +609,7 @@ bool wxDbTable::execDelete(const wxString &pSqlStmt) retcode == SQL_SUCCESS_WITH_INFO) { // Record deleted successfully - return(true); + return(TRUE); } // Problem deleting record @@ -629,7 +631,7 @@ bool wxDbTable::execUpdate(const wxString &pSqlStmt) retcode == SQL_SUCCESS_WITH_INFO) { // Record updated successfully - return(true); + return(TRUE); } // Problem updating record @@ -647,7 +649,7 @@ bool wxDbTable::query(int queryType, bool forUpdate, bool distinct, const wxStri // The user may wish to select for update, but the DBMS may not be capable selectForUpdate = CanSelectForUpdate(); else - selectForUpdate = false; + selectForUpdate = FALSE; // Set the SQL SELECT string if (queryType != DB_SELECT_STATEMENT) // A select statement was not passed in, @@ -658,16 +660,16 @@ bool wxDbTable::query(int queryType, bool forUpdate, bool distinct, const wxStri // Make sure the cursor is closed first if (!CloseCursor(hstmt)) - return(false); + return(FALSE); // Execute the SQL SELECT statement - int retcode; + int retcode; retcode = SQLExecDirect(hstmt, (UCHAR FAR *) (queryType == DB_SELECT_STATEMENT ? pSqlStmt.c_str() : sqlStmt.c_str()), SQL_NTS); if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) return(pDb->DispAllErrors(henv, hdbc, hstmt)); // Completed successfully - return(true); + return(TRUE); } // wxDbTable::query() @@ -679,7 +681,7 @@ bool wxDbTable::query(int queryType, bool forUpdate, bool distinct, const wxStri bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) { if (!pDb) - return false; + return FALSE; int i; wxString sqlStmt; @@ -711,12 +713,12 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) else if (checkPrivileges) { // Verify the user has rights to access the table. - // Shortcut boolean evaluation to optimize out call to + // Shortcut boolean evaluation to optimize out call to // TablePrivileges // // Unfortunately this optimization doesn't seem to be // reliable! - if (// *(pDb->dbInf.accessibleTables) == 'N' && + if (// *(pDb->dbInf.accessibleTables) == 'N' && !pDb->TablePrivileges(tableName,wxT("SELECT"), pDb->GetUsername(), pDb->GetUsername(), tablePath)) s = wxT("Current logged in user does not have sufficient privileges to access this table.\n"); } @@ -733,7 +735,7 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) p += s; pDb->LogError(p.GetData()); - return(false); + return(FALSE); } // Bind the member variables for field exchange between @@ -741,17 +743,17 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) if (!queryOnly) { if (!bindInsertParams()) // Inserts - return(false); - + return(FALSE); + if (!bindUpdateParams()) // Updates - return(false); + return(FALSE); } if (!bindCols(*hstmtDefault)) // Selects - return(false); - + return(FALSE); + if (!bindCols(hstmtInternal)) // Internal use only - return(false); + return(FALSE); /* * Do NOT bind the hstmtCount cursor!!! @@ -760,7 +762,7 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) // Build an insert statement using parameter markers if (!queryOnly && noCols > 0) { - bool needComma = false; + bool needComma = FALSE; sqlStmt.Printf(wxT("INSERT INTO %s ("), tableName.c_str()); for (i = 0; i < noCols; i++) { @@ -769,9 +771,9 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) if (needComma) sqlStmt += wxT(","); sqlStmt += colDefs[i].ColName; - needComma = true; + needComma = TRUE; } - needComma = false; + needComma = FALSE; sqlStmt += wxT(") VALUES ("); int insertableCount = 0; @@ -783,23 +785,23 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) if (needComma) sqlStmt += wxT(","); sqlStmt += wxT("?"); - needComma = true; + needComma = TRUE; insertableCount++; } sqlStmt += wxT(")"); - + // Prepare the insert statement for execution - if (insertableCount) + if (insertableCount) { if (SQLPrepare(hstmtInsert, (UCHAR FAR *) sqlStmt.c_str(), SQL_NTS) != SQL_SUCCESS) return(pDb->DispAllErrors(henv, hdbc, hstmtInsert)); } - else - insertable= false; + else + insertable= FALSE; } - + // Completed successfully - return(true); + return(TRUE); } // wxDbTable::Open() @@ -818,7 +820,7 @@ bool wxDbTable::QueryBySqlStmt(const wxString &pSqlStmt) { pDb->WriteSqlLog(pSqlStmt); - return(query(DB_SELECT_STATEMENT, false, false, pSqlStmt)); + return(query(DB_SELECT_STATEMENT, FALSE, FALSE, pSqlStmt)); } // wxDbTable::QueryBySqlStmt() @@ -847,7 +849,7 @@ bool wxDbTable::GetPrev(void) if (pDb->FwdOnlyCursors()) { wxFAIL_MSG(wxT("GetPrev()::Backward scrolling cursors are not enabled for this instance of wxDbTable")); - return false; + return FALSE; } else return(getRec(SQL_FETCH_PRIOR)); @@ -861,7 +863,7 @@ bool wxDbTable::operator--(int) if (pDb->FwdOnlyCursors()) { wxFAIL_MSG(wxT("operator--:Backward scrolling cursors are not enabled for this instance of wxDbTable")); - return false; + return FALSE; } else return(getRec(SQL_FETCH_PRIOR)); @@ -875,7 +877,7 @@ bool wxDbTable::GetFirst(void) if (pDb->FwdOnlyCursors()) { wxFAIL_MSG(wxT("GetFirst():Backward scrolling cursors are not enabled for this instance of wxDbTable")); - return false; + return FALSE; } else return(getRec(SQL_FETCH_FIRST)); @@ -889,9 +891,9 @@ bool wxDbTable::GetLast(void) if (pDb->FwdOnlyCursors()) { wxFAIL_MSG(wxT("GetLast()::Backward scrolling cursors are not enabled for this instance of wxDbTable")); - return false; + return FALSE; } - else + else return(getRec(SQL_FETCH_LAST)); } // wxDbTable::GetLast() @@ -982,13 +984,13 @@ void wxDbTable::BuildSelectStmt(wxString &pSqlStmt, int typeOfSelect, bool disti // Was a FROM clause specified to join tables to the base table? // Available for ::Query() only!!! - bool appendFromClause = false; + bool appendFromClause = FALSE; #if wxODBC_BACKWARD_COMPATABILITY if (typeOfSelect == DB_SELECT_WHERE && from && wxStrlen(from)) - appendFromClause = true; + appendFromClause = TRUE; #else if (typeOfSelect == DB_SELECT_WHERE && from.Length()) - appendFromClause = true; + appendFromClause = TRUE; #endif // Add the column list @@ -1108,7 +1110,7 @@ void wxDbTable::BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpd, const wxStrin wxString whereClause; whereClause.Empty(); - bool firstColumn = true; + bool firstColumn = TRUE; pSqlStmt.Printf(wxT("UPDATE %s SET "), tableName.Upper().c_str()); @@ -1122,7 +1124,7 @@ void wxDbTable::BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpd, const wxStrin if (!firstColumn) pSqlStmt += wxT(","); else - firstColumn = false; + firstColumn = FALSE; pSqlStmt += colDefs[i].ColName; pSqlStmt += wxT(" = ?"); } @@ -1181,7 +1183,7 @@ void wxDbTable::BuildWhereClause(wxString &pWhereClause, int typeOfWhere, * They are not included as part of the where clause. */ { - bool moreThanOneColumn = false; + bool moreThanOneColumn = FALSE; wxString colValue; // Loop through the columns building a where clause as you go @@ -1199,7 +1201,7 @@ void wxDbTable::BuildWhereClause(wxString &pWhereClause, int typeOfWhere, if (moreThanOneColumn) pWhereClause += wxT(" AND "); else - moreThanOneColumn = true; + moreThanOneColumn = TRUE; // Concatenate where phrase for the column if (qualTableName.Length()) { @@ -1275,7 +1277,7 @@ bool wxDbTable::CloseCursor(HSTMT cursor) return(pDb->DispAllErrors(henv, hdbc, cursor)); // Completed successfully - return(true); + return(TRUE); } // wxDbTable::CloseCursor() @@ -1284,7 +1286,7 @@ bool wxDbTable::CloseCursor(HSTMT cursor) bool wxDbTable::CreateTable(bool attemptDrop) { if (!pDb) - return false; + return FALSE; int i, j; wxString sqlStmt; @@ -1295,7 +1297,7 @@ bool wxDbTable::CreateTable(bool attemptDrop) // Drop table first if (attemptDrop && !DropTable()) - return false; + return FALSE; // Create the table #ifdef DBDEBUG_CONSOLE @@ -1328,7 +1330,7 @@ bool wxDbTable::CreateTable(bool attemptDrop) #endif // Build a CREATE TABLE string from the colDefs structure. - bool needComma = false; + bool needComma = FALSE; sqlStmt.Printf(wxT("CREATE TABLE %s ("), tableName.c_str()); for (i = 0; i < noCols; i++) @@ -1381,8 +1383,8 @@ bool wxDbTable::CreateTable(bool attemptDrop) sqlStmt += wxT(" NOT NULL"); } } - - needComma = true; + + needComma = TRUE; } // If there is a primary key defined, include it in the create statement for (i = j = 0; i < noCols; i++) @@ -1460,17 +1462,17 @@ bool wxDbTable::CreateTable(bool attemptDrop) pDb->DispAllErrors(henv, hdbc, hstmt); pDb->RollbackTrans(); CloseCursor(hstmt); - return(false); + return(FALSE); } // Commit the transaction and close the cursor if (!pDb->CommitTrans()) - return(false); + return(FALSE); if (!CloseCursor(hstmt)) - return(false); + return(FALSE); // Database table created successfully - return(true); + return(TRUE); } // wxDbTable::CreateTable() @@ -1478,7 +1480,7 @@ bool wxDbTable::CreateTable(bool attemptDrop) /********** wxDbTable::DropTable() **********/ bool wxDbTable::DropTable() { - // NOTE: This function returns true if the Table does not exist, but + // NOTE: This function returns TRUE if the Table does not exist, but // only for identified databases. Code will need to be added // below for any other databases when those databases are defined // to handle this situation consistently @@ -1500,32 +1502,32 @@ bool wxDbTable::DropTable() if (retcode != SQL_SUCCESS) { // Check for "Base table not found" error and ignore - pDb->GetNextError(henv, hdbc, hstmt); + pDb->GetNextError(henv, hdbc, hstmt); if (wxStrcmp(pDb->sqlState, wxT("S0002")) /*&& - wxStrcmp(pDb->sqlState, wxT("S1000"))*/) // "Base table not found" + wxStrcmp(pDb->sqlState, wxT("S1000"))*/) // "Base table not found" { // Check for product specific error codes if (!((pDb->Dbms() == dbmsSYBASE_ASA && !wxStrcmp(pDb->sqlState,wxT("42000"))) || // 5.x (and lower?) - (pDb->Dbms() == dbmsSYBASE_ASE && !wxStrcmp(pDb->sqlState,wxT("37000"))) || + (pDb->Dbms() == dbmsSYBASE_ASE && !wxStrcmp(pDb->sqlState,wxT("37000"))) || (pDb->Dbms() == dbmsPERVASIVE_SQL && !wxStrcmp(pDb->sqlState,wxT("S1000"))) || // Returns an S1000 then an S0002 - (pDb->Dbms() == dbmsPOSTGRES && !wxStrcmp(pDb->sqlState,wxT("08S01"))))) + (pDb->Dbms() == dbmsPOSTGRES && !wxStrcmp(pDb->sqlState,wxT("08S01"))))) { pDb->DispNextError(); pDb->DispAllErrors(henv, hdbc, hstmt); pDb->RollbackTrans(); // CloseCursor(hstmt); - return(false); + return(FALSE); } } } // Commit the transaction and close the cursor if (! pDb->CommitTrans()) - return(false); + return(FALSE); if (! CloseCursor(hstmt)) - return(false); + return(FALSE); - return(true); + return(TRUE); } // wxDbTable::DropTable() @@ -1537,7 +1539,7 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol // Drop the index first if (attemptDrop && !DropIndex(idxName)) - return (false); + return (FALSE); // MySQL (and possibly Sybase ASE?? - gt) require that any columns which are used as portions // of an index have the columns defined as "NOT NULL". During initial table creation though, @@ -1551,11 +1553,11 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol { wxString sqlStmt; int i; - bool ok = true; + bool ok = TRUE; for (i = 0; i < noIdxCols && ok; i++) { int j = 0; - bool found = false; + bool found = FALSE; // Find the column definition that has the ColName that matches the // index column name. We need to do this to get the DB_DATA_TYPE of // the index column, as MySQL's syntax for the ALTER column requires @@ -1563,11 +1565,11 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol while (!found && (j < this->noCols)) { if (wxStrcmp(colDefs[j].ColName,pIdxDefs[i].ColName) == 0) - found = true; + found = TRUE; if (!found) j++; } - + if (found) { ok = pDb->ModifyColumn(tableName, pIdxDefs[i].ColName, @@ -1584,28 +1586,28 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol } } else - ok = false; + ok = FALSE; } if (ok) pDb->CommitTrans(); else { pDb->RollbackTrans(); - return(false); + return(FALSE); } } - + // Build a CREATE INDEX statement sqlStmt = wxT("CREATE "); if (unique) sqlStmt += wxT("UNIQUE "); - + sqlStmt += wxT("INDEX "); sqlStmt += idxName; sqlStmt += wxT(" ON "); sqlStmt += tableName; sqlStmt += wxT(" ("); - + // Append list of columns making up index int i; for (i = 0; i < noIdxCols; i++) @@ -1627,7 +1629,7 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol if ((i + 1) < noIdxCols) sqlStmt += wxT(","); } - + // Append closing parentheses sqlStmt += wxT(")"); @@ -1643,17 +1645,17 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol pDb->DispAllErrors(henv, hdbc, hstmt); pDb->RollbackTrans(); CloseCursor(hstmt); - return(false); + return(FALSE); } // Commit the transaction and close the cursor if (! pDb->CommitTrans()) - return(false); + return(FALSE); if (! CloseCursor(hstmt)) - return(false); + return(FALSE); // Index Created Successfully - return(true); + return(TRUE); } // wxDbTable::CreateIndex() @@ -1661,7 +1663,7 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol /********** wxDbTable::DropIndex() **********/ bool wxDbTable::DropIndex(const wxString &idxName) { - // NOTE: This function returns true if the Index does not exist, but + // NOTE: This function returns TRUE if the Index does not exist, but // only for identified databases. Code will need to be added // below for any other databases when those databases are defined // to handle this situation consistently @@ -1703,18 +1705,18 @@ bool wxDbTable::DropIndex(const wxString &idxName) pDb->DispAllErrors(henv, hdbc, hstmt); pDb->RollbackTrans(); CloseCursor(hstmt); - return(false); + return(FALSE); } } } // Commit the transaction and close the cursor if (! pDb->CommitTrans()) - return(false); + return(FALSE); if (! CloseCursor(hstmt)) - return(false); + return(FALSE); - return(true); + return(TRUE); } // wxDbTable::DropIndex() @@ -1724,7 +1726,7 @@ bool wxDbTable::SetOrderByColNums(UWORD first, ... ) int colNo = first; // using 'int' to be able to look for wxDB_NO_MORE_COLUN_NUMBERS va_list argptr; - bool abort = false; + bool abort = FALSE; wxString tempStr; va_start(argptr, first); /* Initialize variable arguments. */ @@ -1736,7 +1738,7 @@ bool wxDbTable::SetOrderByColNums(UWORD first, ... ) // Valid columns are 0 thru noCols-1 if (colNo >= noCols || colNo < 0) { - abort = true; + abort = TRUE; continue; } @@ -1791,7 +1793,7 @@ bool wxDbTable::Update(void) { wxASSERT(!queryOnly); if (queryOnly) - return(false); + return(FALSE); wxString sqlStmt; @@ -1815,7 +1817,7 @@ bool wxDbTable::Update(const wxString &pSqlStmt) { wxASSERT(!queryOnly); if (queryOnly) - return(false); + return(FALSE); pDb->WriteSqlLog(pSqlStmt); @@ -1829,7 +1831,7 @@ bool wxDbTable::UpdateWhere(const wxString &pWhereClause) { wxASSERT(!queryOnly); if (queryOnly) - return(false); + return(FALSE); wxString sqlStmt; @@ -1853,7 +1855,7 @@ bool wxDbTable::Delete(void) { wxASSERT(!queryOnly); if (queryOnly) - return(false); + return(FALSE); wxString sqlStmt; sqlStmt.Empty(); @@ -1874,7 +1876,7 @@ bool wxDbTable::DeleteWhere(const wxString &pWhereClause) { wxASSERT(!queryOnly); if (queryOnly) - return(false); + return(FALSE); wxString sqlStmt; sqlStmt.Empty(); @@ -1895,7 +1897,7 @@ bool wxDbTable::DeleteMatching(void) { wxASSERT(!queryOnly); if (queryOnly) - return(false); + return(FALSE); wxString sqlStmt; sqlStmt.Empty(); @@ -1915,7 +1917,7 @@ bool wxDbTable::DeleteMatching(void) bool wxDbTable::IsColNull(UWORD colNo) const { /* - This logic is just not right. It would indicate true + This logic is just not right. It would indicate TRUE if a numeric field were set to a value of 0. switch(colDefs[colNo].SqlCtype) @@ -1938,11 +1940,11 @@ bool wxDbTable::IsColNull(UWORD colNo) const TIMESTAMP_STRUCT *pDt; pDt = (TIMESTAMP_STRUCT *) colDefs[colNo].PtrDataObj; if (pDt->year == 0 && pDt->month == 0 && pDt->day == 0) - return(true); + return(TRUE); else - return(false); + return(FALSE); default: - return(true); + return(TRUE); } */ return (colDefs[colNo].Null); @@ -1953,16 +1955,16 @@ bool wxDbTable::IsColNull(UWORD colNo) const bool wxDbTable::CanSelectForUpdate(void) { if (queryOnly) - return false; + return FALSE; if (pDb->Dbms() == dbmsMY_SQL) - return false; + return FALSE; if ((pDb->Dbms() == dbmsORACLE) || (pDb->dbInf.posStmts & SQL_PS_SELECT_FOR_UPDATE)) - return(true); + return(TRUE); else - return(false); + return(FALSE); } // wxDbTable::CanSelectForUpdate() @@ -1971,15 +1973,15 @@ bool wxDbTable::CanSelectForUpdate(void) bool wxDbTable::CanUpdByROWID(void) { /* - * NOTE: Returning false for now until this can be debugged, + * NOTE: Returning FALSE for now until this can be debugged, * as the ROWID is not getting updated correctly */ - return false; + return FALSE; /* if (pDb->Dbms() == dbmsORACLE) - return(true); + return(TRUE); else - return(false); + return(FALSE); */ } // wxDbTable::CanUpdByROWID() @@ -1988,9 +1990,9 @@ bool wxDbTable::CanUpdByROWID(void) bool wxDbTable::IsCursorClosedOnCommit(void) { if (pDb->dbInf.cursorCommitBehavior == SQL_CB_PRESERVE) - return(false); + return(FALSE); else - return(true); + return(TRUE); } // wxDbTable::IsCursorClosedOnCommit() @@ -2067,7 +2069,7 @@ bool wxDbTable::SetQueryTimeout(UDWORD nSeconds) return(pDb->DispAllErrors(henv, hdbc, hstmtInternal)); // Completed Successfully - return(true); + return(TRUE); } // wxDbTable::SetQueryTimeout() @@ -2082,12 +2084,15 @@ void wxDbTable::SetColDefs(UWORD index, const wxString &fieldName, int dataType, if (fieldName.Length() > (unsigned int) DB_MAX_COLUMN_NAME_LEN) { - int assertColumnNameTooLong = 0; wxStrncpy(colDefs[index].ColName, fieldName, DB_MAX_COLUMN_NAME_LEN); colDefs[index].ColName[DB_MAX_COLUMN_NAME_LEN] = 0; + +#ifdef __WXDEBUG__ wxString tmpMsg; - tmpMsg.Printf("Column name '%s' is too long. Truncated to '%s'.",fieldName.c_str(),colDefs[index].ColName); - wxASSERT_MSG(assertColumnNameTooLong,tmpMsg.c_str()); + tmpMsg.Printf(_T("Column name '%s' is too long. Truncated to '%s'."), + fieldName.c_str(),colDefs[index].ColName); + wxFAIL_MSG(tmpMsg); +#endif // __WXDEBUG__ } else wxStrcpy(colDefs[index].ColName, fieldName); @@ -2101,8 +2106,8 @@ void wxDbTable::SetColDefs(UWORD index, const wxString &fieldName, int dataType, // Derived columns by definition would NOT be "Insertable" or "Updateable" if (derivedCol) { - colDefs[index].Updateable = false; - colDefs[index].InsertAllowed = false; + colDefs[index].Updateable = FALSE; + colDefs[index].InsertAllowed = FALSE; } else { @@ -2110,8 +2115,8 @@ void wxDbTable::SetColDefs(UWORD index, const wxString &fieldName, int dataType, colDefs[index].InsertAllowed = insAllow; } - colDefs[index].Null = false; - + colDefs[index].Null = FALSE; + } // wxDbTable::SetColDefs() @@ -2124,7 +2129,7 @@ wxDbColDataPtr* wxDbTable::SetColDefs(wxDbColInf *pColInfs, UWORD numCols) if (pColInfs) { UWORD index; - + pColDataPtrs = new wxDbColDataPtr[numCols+1]; for (index = 0; index < numCols; index++) @@ -2165,7 +2170,7 @@ wxDbColDataPtr* wxDbTable::SetColDefs(wxDbColInf *pColInfs, UWORD numCols) pColDataPtrs[index].PtrDataObj = new double; pColDataPtrs[index].SzDataObj = sizeof(double); pColDataPtrs[index].SqlCtype = SQL_C_DOUBLE; - } + } break; case DB_DATA_TYPE_DATE: pColDataPtrs[index].PtrDataObj = new TIMESTAMP_STRUCT; @@ -2173,8 +2178,7 @@ wxDbColDataPtr* wxDbTable::SetColDefs(wxDbColInf *pColInfs, UWORD numCols) pColDataPtrs[index].SqlCtype = SQL_C_TIMESTAMP; break; case DB_DATA_TYPE_BLOB: - int notSupportedYet = 0; - wxASSERT_MSG(notSupportedYet, wxT("This form of ::SetColDefs() cannot be used with BLOB columns")); + wxFAIL_MSG(wxT("This form of ::SetColDefs() cannot be used with BLOB columns")); pColDataPtrs[index].PtrDataObj = /*BLOB ADDITION NEEDED*/NULL; pColDataPtrs[index].SzDataObj = /*BLOB ADDITION NEEDED*/sizeof(void *); pColDataPtrs[index].SqlCtype = SQL_VARBINARY; @@ -2184,7 +2188,7 @@ wxDbColDataPtr* wxDbTable::SetColDefs(wxDbColInf *pColInfs, UWORD numCols) SetColDefs (index,pColInfs[index].colName,pColInfs[index].dbDataType, pColDataPtrs[index].PtrDataObj, pColDataPtrs[index].SqlCtype, pColDataPtrs[index].SzDataObj); else { - // Unable to build all the column definitions, as either one of + // Unable to build all the column definitions, as either one of // the calls to "new" failed above, or there was a BLOB field // to have a column definition for. If BLOBs are to be used, // the other form of ::SetColDefs() must be used, as it is impossible @@ -2246,7 +2250,7 @@ ULONG wxDbTable::Count(const wxString &args) // Initialize the Count cursor if it's not already initialized if (!hstmtCount) { - hstmtCount = GetNewCursor(false,false); + hstmtCount = GetNewCursor(FALSE,FALSE); wxASSERT(hstmtCount); if (!hstmtCount) return(0); @@ -2286,7 +2290,7 @@ ULONG wxDbTable::Count(const wxString &args) /********** wxDbTable::Refresh() **********/ bool wxDbTable::Refresh(void) { - bool result = true; + bool result = TRUE; // Switch to the internal cursor so any active cursors are not corrupted HSTMT currCursor = GetCursor(); @@ -2329,10 +2333,10 @@ bool wxDbTable::Refresh(void) where = whereClause; orderBy.Empty(); if (!Query()) - result = false; + result = FALSE; if (result && !GetNext()) - result = false; + result = FALSE; // Switch back to original cursor SetCursor(&currCursor); @@ -2357,11 +2361,11 @@ bool wxDbTable::SetColNull(UWORD colNo, bool set) { colDefs[colNo].Null = set; if (set) // Blank out the values in the member variable - ClearMemberVar(colNo,false); // Must call with false, or infinite recursion will happen - return(true); + ClearMemberVar(colNo,FALSE); // Must call with FALSE, or infinite recursion will happen + return(TRUE); } else - return(false); + return(FALSE); } // wxDbTable::SetColNull() @@ -2380,11 +2384,11 @@ bool wxDbTable::SetColNull(const wxString &colName, bool set) { colDefs[i].Null = set; if (set) // Blank out the values in the member variable - ClearMemberVar(i,false); // Must call with false, or infinite recursion will happen - return(true); + ClearMemberVar(i,FALSE); // Must call with FALSE, or infinite recursion will happen + return(TRUE); } else - return(false); + return(FALSE); } // wxDbTable::SetColNull() @@ -2431,7 +2435,7 @@ HSTMT *wxDbTable::GetNewCursor(bool setCursor, bool bindColumns) /********** wxDbTable::DeleteCursor() **********/ bool wxDbTable::DeleteCursor(HSTMT *hstmtDel) { - bool result = true; + bool result = TRUE; if (!hstmtDel) // Cursor already deleted return(result); @@ -2439,12 +2443,12 @@ bool wxDbTable::DeleteCursor(HSTMT *hstmtDel) /* ODBC 3.0 says to use this form if (SQLFreeHandle(*hstmtDel, SQL_DROP) != SQL_SUCCESS) - + */ if (SQLFreeStmt(*hstmtDel, SQL_DROP) != SQL_SUCCESS) { pDb->DispAllErrors(henv, hdbc); - result = false; + result = FALSE; } delete hstmtDel; @@ -2461,7 +2465,7 @@ void wxDbTable::SetRowMode(const rowmode_t rowmode) { if (!m_hstmtGridQuery) { - m_hstmtGridQuery = GetNewCursor(false,false); + m_hstmtGridQuery = GetNewCursor(FALSE,FALSE); if (!bindCols(*m_hstmtGridQuery)) return; } @@ -2549,21 +2553,21 @@ void wxDbTable::SetCol(const int col, const wxVariant val) if (!val.IsNull()) { - if ((colDefs[col].SqlCtype == SQL_C_DATE) + if ((colDefs[col].SqlCtype == SQL_C_DATE) || (colDefs[col].SqlCtype == SQL_C_TIME) || (colDefs[col].SqlCtype == SQL_C_TIMESTAMP)) { //Returns null if invalid! if (!dateval.ParseDate(val.GetString())) - SetColNull(col,true); - } + SetColNull(col,TRUE); + } switch (colDefs[col].SqlCtype) { case SQL_CHAR: case SQL_VARCHAR: csstrncpyt((char *)(colDefs[col].PtrDataObj), - val.GetString().c_str(), + val.GetString().c_str(), colDefs[col].SzDataObj-1); break; case SQL_C_LONG: @@ -2591,7 +2595,7 @@ void wxDbTable::SetCol(const int col, const wxVariant val) { DATE_STRUCT *dataptr = (DATE_STRUCT *)colDefs[col].PtrDataObj; - + dataptr->year = dateval.GetYear(); dataptr->month = dateval.GetMonth()+1; dataptr->day = dateval.GetDay(); @@ -2601,7 +2605,7 @@ void wxDbTable::SetCol(const int col, const wxVariant val) { TIME_STRUCT *dataptr = (TIME_STRUCT *)colDefs[col].PtrDataObj; - + dataptr->hour = dateval.GetHour(); dataptr->minute = dateval.GetMinute(); dataptr->second = dateval.GetSecond(); @@ -2614,7 +2618,7 @@ void wxDbTable::SetCol(const int col, const wxVariant val) dataptr->year = dateval.GetYear(); dataptr->month = dateval.GetMonth()+1; dataptr->day = dateval.GetDay(); - + dataptr->hour = dateval.GetHour(); dataptr->minute = dateval.GetMinute(); dataptr->second = dateval.GetSecond(); @@ -2634,10 +2638,10 @@ GenericKey wxDbTable::GetKey() { void *blk; char *blkptr; - + blk = malloc(m_keysize); blkptr = (char *) blk; - + int i; for (i=0; i < noCols; i++) { @@ -2659,7 +2663,7 @@ void wxDbTable::SetKey(const GenericKey& k) { void *blk; char *blkptr; - + blk = k.GetBlk(); blkptr = (char *)blk; @@ -2668,7 +2672,7 @@ void wxDbTable::SetKey(const GenericKey& k) { if (colDefs[i].KeyField) { - SetColNull(i, false); + SetColNull(i, FALSE); memcpy(colDefs[i].PtrDataObj, blkptr, colDefs[i].SzDataObj); blkptr += colDefs[i].SzDataObj; }