?? sqlsetx.h
字號:
// SQLSet.h: interface for the CSQLSetX class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SQLSETX_H__389F1EE6_21F6_11D3_9EEB_0000E8509A6A__INCLUDED_)
#define AFX_SQLSETX_H__389F1EE6_21F6_11D3_9EEB_0000E8509A6A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "DatabaseX.h"
#include "MyBArray.h"
#define MAXBUFFER 1024*1024
class CSQLSetX : public CObject
{
public:
CSQLSetX(CDatabaseX* pdatabase = NULL);
virtual ~CSQLSetX();
enum OpenType
{
dynaset, // uses SQLExtendedFetch, keyset driven cursor
snapshot, // uses SQLExtendedFetch, static cursor
forwardOnly, // uses SQLFetch
dynamic // uses SQLExtendedFetch, dynamic cursor
};
enum OpenOptions
{
none = 0x0,
readOnly = 0x0004,
appendOnly = 0x0008,
skipDeletedRecords = 0x0010, // turn on skipping of deleted records, Will slow Move(n).
noDirtyFieldCheck = 0x0020, // disable automatic dirty field checking
useBookmarks = 0x0100, // turn on bookmark support
useMultiRowFetch = 0x0200, // turn on multi-row fetch model
userAllocMultiRowBuffers = 0x0400, // if multi-row fetch on, user will alloc memory for buffers
useExtendedFetch = 0x0800, // use SQLExtendedFetch with forwardOnly type recordsets
executeDirect = 0x2000, // Directly execute SQL rather than prepared execute
optimizeBulkAdd = 0x4000, // Use prepared HSTMT for multiple AddNews, dirty fields must not change.
firstBulkAdd = 0x8000, // INTERNAL to MFC, don't specify on Open.
};
enum LockMode
{
optimistic,
pessimistic,
};
public:
CDatabaseX* pDatabase;
BOOL CloseBindLong;
void VerifyDriverBehavior();
DWORD VerifyCursorSupport();
void SetUpdateMethod();
void SetConcurrencyAndCursorType(HSTMT hstmt, DWORD dwScrollOptions);
void replace(char *from);
public:
BOOL readLongThisTime();
BOOL RePosAfterDeleteOrUpdate(int re, int oldrec);
BOOL SkipRecord(int org, int irr);
BOOL SkipBackward(int nrec);
BOOL SkipForward(int nrec);
void CloseReadStmt();
void CloseUpdateStmt();
BOOL setLongBinary(int iCol, char *fname);
BOOL getLongBinary(int iCol);
BOOL StopGetData;
virtual void EndOfUpdate();
virtual int SetDummyColumns(int startColumn, int nColumns);
BOOL IsEOF();
int MoveNext(int irr);
BOOL MoveFirst(int irr);
BOOL MoveLast(int irr);
BOOL MovePrev(int irr);
virtual BOOL Open(char *, int irr=0);
virtual void Close();
int ReadNext(SQLSMALLINT org=NULL, int irr=0);
int AddNew();
int Modify();
int Delete();
int Update();
BOOL IsOpen();
BOOL IsEof();
BOOL Check(RETCODE nRetCode) const;
CStringArray m_strName; //字符串名字
CStringArray m_strType; //原始類型
CStringArray m_strTable; //原始表
DWORD m_dwOptions; // archive dwOptions on Open
BOOL m_bUseUpdateSQL; // uses SQL-based updates
BOOL m_bUpdatable; // Is recordset updatable?
UDWORD m_dwConcurrency; // requested concurrency type
BOOL m_bAppendable;
UDWORD m_dwDriverConcurrency; // driver supported concurrency types
BOOL m_nLockMode; // Control concurrency for Edit()
BOOL m_bScrollable; // supports MovePrev
BOOL m_bCheckCacheForDirtyFields; // switch for dirty field checking
void SetState(int nOpenType, LPCTSTR lpszSQL, DWORD dwOptions);
int m_currentRecNo;
BOOL m_noReadLong;
BOOL m_isAutoInc[256];
protected:
UINT m_nOpenType;
UINT m_nDefaultType;
SQLHSTMT m_readHstmt;
SQLHSTMT m_updateHstmt;
SQLSMALLINT m_nColumn;
CStringArray m_Name; //帶[]號的名字
CPtrArray m_Value;
CUIntArray m_Width;
CUIntArray m_Type;
CDWordArray m_dataLen;
SDWORD inLen[256];
char bit[8192];
char work[4096];
void *dataptr;
long cbData, nchar;
long opcode;
UCHAR szCursor[30];
SWORD szCursorLen;
SQLSMALLINT Nullable[256];
SQLINTEGER StrLen_or_IndPtr[256];
SQLINTEGER oStrLen_or_IndPtr[256];
BOOL nullField[256];
//used for SetFX_
SQLSMALLINT m_fld_c_type[256];
char m_fld_name[256][64];
void *m_fld_ptr[256];
int m_col;
HFILE h;
OFSTRUCT of;
int m_irr;
CString deleteSql;
CString strSQL;
CString selSql;
CString insSql;
CString updateSql;
CString strTable;
CString strFields; //select 后面的字段列表
BOOL isOpen,isAdd;
BOOL isEOF, isBOF;
BOOL hasLongB;
protected:
void ResetInit();
int OutPutBind(CString &runSql);
int OutPutBindEx(CString &runSql, int IdVar);
BOOL tell_me_error(SQLHSTMT hstmt);
BOOL reOpen();
//
virtual void OnSetOptions(HSTMT hstmt);
virtual void DoFieldExchange(CFieldExchange* pFX);
virtual CString GetDefaultSQL();
//
BOOL SetFX_Test(LPCTSTR szName);
void SetFX_Text(LPCTSTR szName, char * value);
void SetFX_Text(LPCTSTR szName, CString& value);
void SetFX_Text(LPCTSTR szName, LPCTSTR value);
void SetFX_Int(LPCTSTR szName, int& value);
void SetFX_Long(LPCTSTR szName, long& value);
void SetFX_Real(LPCTSTR szName, float & value);
void SetFX_Double(LPCTSTR szName, double & value);
void SetFX_Binary(LPCTSTR szName, CMyByteArray& value);
void SetFX_Date(LPCTSTR szName, CTime& value);
void SetFX_Date(LPCTSTR szName, TIMESTAMP_STRUCT& value);
void SetFX_LongBinary(LPCTSTR szName, CLongBinary& value);
void SetFX_Byte(LPCTSTR szName, BYTE& value);
void SetFX_Bool(LPCTSTR szName, BOOL& value);
BOOL to_user_Bool(int);
BOOL to_user_Byte(int);
BOOL to_user_Short(int);
BOOL to_user_Long(int);
BOOL to_user_Float(int);
BOOL to_user_Double(int);
BOOL to_user_Date(int);
BOOL to_user_Time(int);
BOOL to_user_TimeStamp(int);
BOOL to_user_Char(int);
BOOL to_user_String(int);
BOOL to_user_ByteArray(int);
BOOL to_user_CharDec(int);
BOOL To_Bool(int);
BOOL To_Byte(int);
BOOL To_Short(int);
BOOL To_Long(int);
BOOL To_Float(int);
BOOL To_Double(int);
BOOL To_Date(int);
BOOL To_Time(int);
BOOL To_TimeStamp(int);
BOOL To_Char(int);
BOOL To_String(int);
BOOL To_ByteArray(int);
BOOL to_CharDec(int i);
BOOL dummy_to_Bool(int i);
BOOL dummy_to_Byte(int i);
BOOL dummy_to_Short(int i);
BOOL dummy_to_Long(int i);
BOOL dummy_to_Float(int i);
BOOL dummy_to_Double(int i);
BOOL dummy_to_Date(int i);
BOOL dummy_to_Time(int i);
BOOL dummy_to_TimeStamp(int i);
BOOL dummy_to_Char(int i);
BOOL dummy_to_String(int i);
BOOL dummy_to_ByteArray(int i);
SDWORD to_user_Get_data(int , char*, int);
SDWORD To_Get_data(int , char*, int);
protected:
friend class CBatchAdd;
friend class CDataIn;
};
#endif // !defined(AFX_SQLSETX_H__389F1EE6_21F6_11D3_9EEB_0000E8509A6A__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -