X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/154f22b3facdbca2cb89e091ae2ea1398bfad9d1..d5536adedfb59e4a5792234e6a28949535e13369:/include/wx/dbtable.h diff --git a/include/wx/dbtable.h b/include/wx/dbtable.h index a07217ba8b..5d27927e2a 100644 --- a/include/wx/dbtable.h +++ b/include/wx/dbtable.h @@ -2,7 +2,7 @@ // Name: dbtable.h // Purpose: Declaration of the wxTable class. // Author: Doug Card -// Modified by: +// Modified by: George Tasker // Created: 9.96 // RCS-ID: $Id$ // Copyright: (c) 1996 Remstar International, Inc. @@ -56,8 +56,7 @@ const bool DISABLE_VIEW = TRUE; // wxTable class which allows it to create a table in the data // source, exchange data between the data source and the C++ // object, and so on. - -class WXDLLEXPORT CcolDef +class WXDLLEXPORT wxColDef { public: char ColName[DB_MAX_COLUMN_NAME_LEN+1]; // Column Name @@ -71,7 +70,23 @@ public: bool DerivedCol; // Specifies whether this column is a derived value SDWORD CbValue; // Internal use only!!! bool Null; // NOT FULLY IMPLEMENTED - Allows NULL values in Inserts and Updates -}; // CcolDef +}; // wxColDef + +class WXDLLEXPORT wxColDataPtr +{ +public: + void *PtrDataObj; + int SzDataObj; + int SqlCtype; +}; // wxColDataPtr + + +// Backward compability for Remstar classes. These +// will eventually go away, so the wxColXxxx classes +// should be used +typedef wxColDef CcolDef; +typedef wxColDataPtr CcolDataPtr; + // This structure is used when creating secondary indexes. class WXDLLEXPORT CidxDef @@ -95,8 +110,8 @@ private: bool bindUpdateParams(void); bool bindCols(HSTMT cursor); bool getRec(UWORD fetchType); - bool execDelete(char *pSqlStmt); - bool execUpdate(char *pSqlStmt); + bool execDelete(const char *pSqlStmt); + bool execUpdate(const char *pSqlStmt); bool query(int queryType, bool forUpdate, bool distinct, char *pSqlStmt = 0); public: @@ -124,7 +139,7 @@ public: char tablePath[DB_PATH_MAX]; // needed for dBase tables // Column Definitions - CcolDef *colDefs; // Array of CcolDef structures + wxColDef *colDefs; // Array of wxColDef structures // Where, Order By and From clauses char *where; // Standard SQL where clause, minus the word WHERE @@ -136,20 +151,20 @@ public: // Public member functions wxTable(wxDB *pwxDB, const char *tblName, const int nCols, - const char *qryTblName = 0, bool qryOnly = !QUERY_ONLY, char *tblPath=NULL); + const char *qryTblName = 0, bool qryOnly = !QUERY_ONLY, const char *tblPath=NULL); virtual ~wxTable(); bool Open(void); bool CreateTable(bool attemptDrop=TRUE); bool DropTable(void); - bool CreateIndex(char * idxName, bool unique, int noIdxCols, CidxDef *pIdxDefs, bool attemptDrop=TRUE); - bool DropIndex(char * idxName); + bool CreateIndex(const char * idxName, bool unique, int noIdxCols, CidxDef *pIdxDefs, bool attemptDrop=TRUE); + bool DropIndex(const char * idxName); bool CloseCursor(HSTMT cursor); int Insert(void); bool Update(void); - bool Update(char *pSqlStmt); - bool UpdateWhere(char *pWhereClause); + bool Update(const char *pSqlStmt); + bool UpdateWhere(const char *pWhereClause); bool Delete(void); - bool DeleteWhere(char *pWhereClause); + bool DeleteWhere(const char *pWhereClause); bool DeleteMatching(void); virtual bool Query(bool forUpdate = FALSE, bool distinct = FALSE); bool QueryBySqlStmt(char *pSqlStmt); @@ -157,35 +172,41 @@ public: bool QueryOnKeyFields(bool forUpdate = FALSE, bool distinct = FALSE); bool GetNext(void) { return(getRec(SQL_FETCH_NEXT)); } bool operator++(int) { return(getRec(SQL_FETCH_NEXT)); } -#if !wxODBC_FWD_ONLY_CURSORS - bool GetPrev(void) { return(getRec(SQL_FETCH_PRIOR)); } - bool operator--(int) { return(getRec(SQL_FETCH_PRIOR)); } - bool GetFirst(void) { return(getRec(SQL_FETCH_FIRST)); } - bool GetLast(void) { return(getRec(SQL_FETCH_LAST)); } -#endif + + /***** These four functions only work with wxDB instances that are defined ***** + ***** as not being FwdOnlyCursors *****/ + bool GetPrev(void); + bool operator--(int); + bool GetFirst(void); + bool GetLast(void); + bool IsCursorClosedOnCommit(void); bool IsColNull(int colNo); UWORD GetRowNum(void); void GetSelectStmt(char *pSqlStmt, int typeOfSelect, bool distinct); - void GetDeleteStmt(char *pSqlStmt, int typeOfDel, char *pWhereClause = 0); - void GetUpdateStmt(char *pSqlStmt, int typeOfUpd, char *pWhereClause = 0); - void GetWhereClause(char *pWhereClause, int typeOfWhere, char *qualTableName = 0); + void GetDeleteStmt(char *pSqlStmt, int typeOfDel, const char *pWhereClause = 0); + void GetUpdateStmt(char *pSqlStmt, int typeOfUpd, const char *pWhereClause = 0); + void GetWhereClause(char *pWhereClause, int typeOfWhere, const char *qualTableName = 0); bool CanSelectForUpdate(void); bool CanUpdByROWID(void); void ClearMemberVars(void); bool SetQueryTimeout(UDWORD nSeconds); - void SetColDefs (int index, char *fieldName, int dataType, void *pData, int cType, + void SetColDefs (int index, const char *fieldName, int dataType, void *pData, int cType, int size, bool keyField = FALSE, bool upd = TRUE, bool insAllow = TRUE, bool derivedCol = FALSE); + // BJO20000121 : new prototype + // bool SetColDefs (wxColInf *colInfs, ULONG numCols, wxColDataPtr *pColDataPtrs); + wxColDataPtr* SetColDefs (wxColInf *colInfs, ULONG numCols); + HSTMT *NewCursor(bool setCursor = FALSE, bool bindColumns = TRUE); bool DeleteCursor(HSTMT *hstmtDel); void SetCursor(HSTMT *hstmtActivate = (void **) DEFAULT_CURSOR); HSTMT GetCursor(void) { return(hstmt); } - ULONG Count(void); + ULONG Count(const char *args="*"); int DB_STATUS(void) { return(pDb->DB_STATUS); } bool Refresh(void); bool SetNull(int colNo); - bool SetNull(char *colName); + bool SetNull(const char *colName); #ifdef __WXDEBUG__ ULONG GetTableID() { return tableID; };