dbtable.h

来自「A*算法 A*算法 A*算法 A*算法A*算法A*算法」· C头文件 代码 · 共 382 行 · 第 1/2 页

H
382
字号
    );
#endif // WXWIN_COMPATIBILITY_2_4

    virtual ~wxDbTable();

    bool            Open(bool checkPrivileges=false, bool checkTableExists=true);
    bool            CreateTable(bool attemptDrop=true);
    bool            DropTable(void);
    bool            CreateIndex(const wxString &indexName, bool unique, UWORD numIndexColumns,
                                wxDbIdxDef *pIndexDefs, bool attemptDrop=true);
    bool            DropIndex(const wxString &indexName);

    // Accessors

    // The member variables returned by these accessors are all
    // set when the wxDbTable instance is created and cannot be
    // changed, hence there is no corresponding SetXxxx function
    wxDb           *GetDb()              { return pDb; }
    const wxString &GetTableName()       { return tableName; }
    const wxString &GetQueryTableName()  { return queryTableName; }
    const wxString &GetTablePath()       { return tablePath; }

    UWORD           GetNumberOfColumns() { return m_numCols; }  // number of "defined" columns for this wxDbTable instance

    const wxString &GetFromClause()      { return from; }
    const wxString &GetOrderByClause()   { return orderBy; }
    const wxString &GetWhereClause()     { return where; }

    bool            IsQueryOnly()        { return queryOnly; }
#if wxODBC_BACKWARD_COMPATABILITY
    void            SetFromClause(const char *From) { from = (char *)From; }
    void            SetOrderByClause(const char *OrderBy) { orderBy = (char *)OrderBy; }
    void            SetWhereClause(const char *Where) { where = (char *)Where; }
#else
    void            SetFromClause(const wxString &From) { from = From; }
    void            SetOrderByClause(const wxString &OrderBy) { orderBy = OrderBy; }
    bool            SetOrderByColNums(UWORD first, ...);
    void            SetWhereClause(const wxString &Where) { where = Where; }
    void            From(const wxString &From) { from = From; }
    void            OrderBy(const wxString &OrderBy) { orderBy = OrderBy; }
    void            Where(const wxString &Where) { where = Where; }
    const wxString &Where()   { return where; }
    const wxString &OrderBy() { return orderBy; }
    const wxString &From()    { return from; }
#endif
    int             Insert(void);
    bool            Update(void);
    bool            Update(const wxString &pSqlStmt);
    bool            UpdateWhere(const wxString &pWhereClause);
    bool            Delete(void);
    bool            DeleteWhere(const wxString &pWhereClause);
    bool            DeleteMatching(void);
    virtual bool    Query(bool forUpdate = false, bool distinct = false);
    bool            QueryBySqlStmt(const wxString &pSqlStmt);
    bool            QueryMatching(bool forUpdate = false, bool distinct = false);
    bool            QueryOnKeyFields(bool forUpdate = false, bool distinct = false);
    bool            Refresh(void);
    bool            GetNext(void)   { return(getRec(SQL_FETCH_NEXT));  }
    bool            operator++(int) { return(getRec(SQL_FETCH_NEXT));  }

    /***** 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);
    UWORD           GetRowNum(void);

    void            BuildSelectStmt(wxString &pSqlStmt, int typeOfSelect, bool distinct);
    void            BuildSelectStmt(wxChar *pSqlStmt, int typeOfSelect, bool distinct);

    void            BuildDeleteStmt(wxString &pSqlStmt, int typeOfDel, const wxString &pWhereClause=wxEmptyString);
    void            BuildDeleteStmt(wxChar *pSqlStmt, int typeOfDel, const wxString &pWhereClause=wxEmptyString);

    void            BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpdate, const wxString &pWhereClause=wxEmptyString);
    void            BuildUpdateStmt(wxChar *pSqlStmt, int typeOfUpdate, const wxString &pWhereClause=wxEmptyString);

    void            BuildWhereClause(wxString &pWhereClause, int typeOfWhere, const wxString &qualTableName=wxEmptyString, bool useLikeComparison=false);
    void            BuildWhereClause(wxChar *pWhereClause, int typeOfWhere, const wxString &qualTableName=wxEmptyString, bool useLikeComparison=false);

#if wxODBC_BACKWARD_COMPATABILITY
// The following member functions are deprecated.  You should use the BuildXxxxxStmt functions (above)
    void            GetSelectStmt(char *pSqlStmt, int typeOfSelect, bool distinct)
                           { BuildSelectStmt(pSqlStmt,typeOfSelect,distinct); }
    void            GetDeleteStmt(char *pSqlStmt, int typeOfDel, const char *pWhereClause = NULL)
                           { BuildDeleteStmt(pSqlStmt,typeOfDel,pWhereClause); }
    void            GetUpdateStmt(char *pSqlStmt, int typeOfUpdate, const char *pWhereClause = NULL)
                           { BuildUpdateStmt(pSqlStmt,typeOfUpdate,pWhereClause); }
    void            GetWhereClause(char *pWhereClause, int typeOfWhere,
                                   const char *qualTableName = NULL, bool useLikeComparison=false)
                           { BuildWhereClause(pWhereClause,typeOfWhere,qualTableName,useLikeComparison); }
#endif
    bool            CanSelectForUpdate(void);
#if wxODBC_BACKWARD_COMPATABILITY
    bool            CanUpdByROWID(void) { return CanUpdateByRowID(); };
#endif
    bool            CanUpdateByROWID(void);
    void            ClearMemberVar(UWORD colNumber, bool setToNull=false);
    void            ClearMemberVars(bool setToNull=false);
    bool            SetQueryTimeout(UDWORD nSeconds);

    wxDbColDef     *GetColDefs() { return colDefs; }
    bool            SetColDefs(UWORD index, const wxString &fieldName, int dataType,
                               void *pData, SWORD cType,
                               int size, bool keyField = false, bool updateable = true,
                               bool insertAllowed = true, bool derivedColumn = false);
    wxDbColDataPtr *SetColDefs(wxDbColInf *colInfs, UWORD numCols);

    bool            CloseCursor(HSTMT cursor);
    bool            DeleteCursor(HSTMT *hstmtDel);
    void            SetCursor(HSTMT *hstmtActivate = (void **) wxDB_DEFAULT_CURSOR);
    HSTMT           GetCursor(void) { return(hstmt); }
    HSTMT          *GetNewCursor(bool setCursor = false, bool bindColumns = true);
#if wxODBC_BACKWARD_COMPATABILITY
// The following member function is deprecated.  You should use the GetNewCursor
    HSTMT          *NewCursor(bool setCursor = false, bool bindColumns = true) {  return GetNewCursor(setCursor,bindColumns); }
#endif

    ULONG           Count(const wxString &args=_T("*"));
    int             DB_STATUS(void) { return(pDb->DB_STATUS); }

    bool            IsColNull(UWORD colNumber) const;
    bool            SetColNull(UWORD colNumber, bool set=true);
    bool            SetColNull(const wxString &colName, bool set=true);
#if wxODBC_BACKWARD_COMPATABILITY
// The following member functions are deprecated.  You should use the SetColNull()
    bool            SetNull(int colNumber, bool set=true) { return (SetNull(colNumber,set)); }
    bool            SetNull(const char *colName, bool set=true) { return (SetNull(colName,set)); }
#endif
#ifdef __WXDEBUG__
    ULONG           GetTableID() { return tableID; }
#endif

//TODO: Need to Document
    typedef     enum  { WX_ROW_MODE_QUERY , WX_ROW_MODE_INDIVIDUAL } rowmode_t;
    virtual     void         SetRowMode(const rowmode_t rowmode);
#if wxODBC_BACKWARD_COMPATABILITY
    virtual     wxVariant    GetCol(const int colNumber) const { return GetColumn(colNumber); };
    virtual     void         SetCol(const int colNumber, const wxVariant value)  { return SetColumn(colNumber, value); };
#endif
    virtual     wxVariant    GetColumn(const int colNumber) const ;
    virtual     void         SetColumn(const int colNumber, const wxVariant value);
    virtual     GenericKey   GetKey(void);
    virtual     void         SetKey(const GenericKey &key);

    private:
        HSTMT      *m_hstmtGridQuery;
        rowmode_t   m_rowmode;
        size_t      m_keysize;

//      typedef enum {unmodified=0, UpdatePending, InsertPending } recStatus;

//      recStatus  get_ModifiedStatus() { return m_recstatus; }

//      void modify() {
//          if (m_recstatus==unmodified)
//              m_recstatus=UpdatePending;
//      }
//  protected:
//      void insertify() {m_recstatus=InsertPending; }
//      void unmodify() {m_recstatus=unmodified; }
//      recStatus m_recstatus;
//TODO: Need to Document
};  // wxDbTable


// Change this to 0 to remove use of all deprecated functions
#if wxODBC_BACKWARD_COMPATABILITY
//#################################################################################
//############### DEPRECATED functions for backward compatibility #################
//#################################################################################

// Backward compability.  These will eventually go away
typedef wxDbTable       wxTable;
typedef wxDbIdxDef      wxIdxDef;
typedef wxDbIdxDef      CidxDef;
typedef wxDbColDef      wxColDef;
typedef wxDbColDef      CcolDef;
typedef wxDbColDataPtr  wxColDataPtr;
typedef wxDbColDataPtr  CcolDataPtr;

const int   ROWID           = wxDB_ROWID_LEN;
const int   DEFAULT_CURSOR  = wxDB_DEFAULT_CURSOR;
const bool  QUERY_ONLY      = wxDB_QUERY_ONLY;
const bool  DISABLE_VIEW    = wxDB_DISABLE_VIEW;
#endif

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?