Listing 1: The CColumns class
class CColumns : public CRecordset
{
DECLARE_DYNAMIC(CColumns)
public:
CColumns( CDatabase* pDatabase = NULL);
BOOL PrepareToOpen(UINT nOpenType,
LPCSTR lpszSQL,
DWORD dwOptions);
BOOL OpenDynamicRowset(CString* );
~CColumns();
LPCSTR GetInsertString( char* );
// Field/Param Data
//{{AFX_FIELD(CColumns, CRecordset)
//}}AFX_FIELD
// members
public:
CPtrArray m_ColumnList;
private:
CString m_Query;
CString m_QueryNoWhere;
CString m_TableSchema;
LPSTR m_pcInsertBuffer;
int m_iBufferSize;
int m_iBufferInc;
int m_iBufferSafety;
BOOL m_bWasPrepared;
// Implementation
private:
int LongBinary( CLongBinary*, char* );
BOOL ReplaceWhereClause();
void AddColumnInfoToList(CColumnInfo* pColInfo);
BOOL AllocStorageForColumnVar(CColumnInfo* pColInfo);
BOOL MapColumnSQLTypeToCType(CColumnInfo* pColInfo);
BOOL GetCreateParamCount (CColumnInfo* pColInfo);
BOOL GenerateTableCreationString(void);
BOOL MakeColumnListFromQuery();
void DecodeSQLError( RETCODE retCode, HDBC hdbc, HSTMT hstmt,
LPSTR pszFile, UINT uiLine);
protected:
virtual CString GetDefaultConnect();
virtual CString GetDefaultSQL();
virtual void DoFieldExchange(CFieldExchange* pFX);
virtual BOOL Open(UINT nOpenType, LPCSTR lpszSQL, DWORD dwOptions);
};
/* End of File */