?? sybdblib.hpp
字號:
/* * Sybase DB-Library * */#ifndef __SYBDBLIB_H_#define __SYBDBLIB_H_#include <string.h>#include <stdarg.h>#include <sybfront.h>#include <sybdb.h>#include <time.h>#ifndef BOOL #define BOOL int#endif#ifndef TRUE #define TRUE 1 #define FALSE 0#endif#ifdef WIN32 #define vsnprintf _vsnprintf // Win32 use _vsprintf#endif// 數據庫操作信息typedef struct{ int sqlcode; // 最近的錯誤 char sqlerrtext[801]; // 最近的錯誤信息 char sqlsvrtext[801]; // 最近的服務器信息 int sqlnrows; // 最近操作的記錄數} _SQLCA;extern _SQLCA sqlca;// 數據庫服務器類class SybServer{public: // 構造函數 SybServer(DBPROCESS * dbproc = NULL); // 析構函數 ~SybServer(); // 設置輸出文件 static void SetSybLogFile(FILE * pOutFile) { m_pSybLogFile = pOutFile; } // 獲取輸出文件 static FILE * GetSybLogFile() { return m_pSybLogFile; } // 輸出日志信息 static void SybWriteLog(const char * sInfoStr,...); // 檢查環境初始化狀態 static BOOL IsEnvInited() { return m_bEnvInited; } // 連接數據庫 BOOL Open(char * sServer,char * sUserName,char * sPassword); // 連接到數據庫? BOOL IsOpened() { return m_dbproc!=(DBPROCESS *)NULL; } // 獲取數據庫句柄 DBPROCESS * GetInstance() { return m_dbproc; } // 斷開數據庫服務器 void Close(); // 切換數據庫 BOOL SetWrkDb(char * sDatabase); // 事務處理開始 BOOL BeginTrans(); // 提交事務處理 BOOL CommitTrans(); // 回滾事務處理 BOOL RollbackTrans(); // 清空結果集 void ClearAllResultSet(); private: static BOOL m_bEnvInited; // 數據庫環境初始化? static FILE * m_pSybLogFile; // 消息輸出文件 static int m_nInstanceCount; // 數據庫實例數 BOOL m_bAutoClose; // 自動關閉數據庫連接? DBPROCESS * m_dbproc; // 數據庫連接句柄};// 列登記數據typedef struct{ int nColId; // 列號 char sColName[40]; // 列名 int nColType; // 列類型 int nColLen; // 列最大長度 int nComputeId; // 計算列編號} SybColumn;// 結果集類class SybResultset{public: // 構造函數 SybResultset(SybServer & svr); // 析構函數 ~SybResultset(); // 獲取結果集 BOOL GetResultset(); // 綁定外部變量(nColId from 1 ..) BOOL MapColumn(char * sColName, void * pColValue, int nColType = 0); BOOL MapColumn(int nColId, void * pColValue, int nColType = 0, int nComputeId = 0); // 獲取返回記錄 BOOL GetData(); // 當前行數據是計算列行? BOOL IsComputeRow(); // 獲取存儲過程返回參數(nRetId from 1..) BOOL GetProcRetParam(int nRetId,void * pRetValue,int nRetType = 0); BOOL GetProcRetParam(char * sRetName,void * pRetValue,int nRetType = 0); // 返回記錄數 int GetRowCount() { return m_nRowCount; } // 返回列數 int GetColCount() { return m_nColCount; } // 獲取返回參數數 int GetRetCount() { return m_nRetCount; } // 獲取返回狀態 int GetRetStatus() { return m_nRetStatus; } // 有返回狀態? BOOL HasRetStatus() { return m_bHasRetStatus; } // 獲取列信息(nIndex from 0..) SybColumn * GetColumn(int nIndex); // 獲取返回參數信息 SybColumn * GetRetParam(int nIndex);private: SybServer * m_pSybSvr; // 數據庫實例 int m_nRowCount; // 影響的記錄數 int m_nColCount; // 返回的列數 int m_nRetCount; // 存儲過程返回參數數 BOOL m_bHasRetStatus; // 存儲過程有返回狀態? int m_nRetStatus; // 存儲過程返回狀態 SybColumn * m_pColumns; // 列登記信息 SybColumn * m_pRetParams; // 返回參數信息};// 數據庫命令類class SybCommand{public: // 構造函數 SybCommand(SybServer & svr, int nMaxResultsetCount = 255); // 析構函數 ~SybCommand(); // 執行命令 >0 記錄數 =0 沒記錄 <0 失敗 int Execute(char * sSqlcmd); // 綁定外部變量 BOOL MapColumn(char * sColName, void * pColValue, int nColType = 0); BOOL MapColumn(int nColId, void * pColValue, int nColType = 0, int nComputeId = 0); // 獲取數據 BOOL GetData(); // 檢查有其他結果集? BOOL HasNextResultSet(); // 當前行數據是計算列行? BOOL IsComputeRow(); // 獲取存儲過程返回參數 BOOL GetProcRetParam(int nRetId,void * pRetValue,int nRetType = 0); // 獲取結果集數 int GetResultsetCount() { return m_nResultsetCount; } // 獲取結果集 SybResultset * GetResultset(int nIndex); // 執行定制的命令 int Select(char * sSelectStr); int Update(char * sUpdateStr); int Delete(char * sDeleteStr); int Insert(char * sInsertStr); // 選取一條記錄 int GetLastRecord(char * sSqlcmd,...); // ... = void * pVarAddr,int nType =0, ...private: SybServer * m_pSybSvr; // 數據庫實例 int m_nResultsetCount; // 結果集數目 int m_nMaxResultsetCount; // 最大結果集數 SybResultset ** m_Results; // 結果集};// 遠程存儲過程類class SybStoredProc{public: // 構造函數 SybStoredProc(SybServer & svr, int nMaxResultsetCount = 255); // 析構函數 ~SybStoredProc(); // 準備存儲過程 BOOL SetProcName(char * sProcName); // 設置存儲過程參數 nLen = 0,Param is NULL, nLen = -1,Params is FixedSize BOOL SetInParam(char * sParamName,BYTE * pParamAddr,int nType,int nLen); BOOL SetOutParam(char * sParamName,BYTE * pParamAddr,int nType,int nLen); // 執行存儲過程 int ExecProc(); // 綁定外部變量 BOOL MapColumn(char * sColName, void * pColValue, int nColType = 0); BOOL MapColumn(int nColId, void * pColValue, int nColType = 0, int nComputeId = 0); // 獲取數據 BOOL GetData(); // 檢查有其他結果集? BOOL HasNextResultSet(); // 當前行數據是計算列行? BOOL IsComputeRow(); // 獲取存儲過程返回參數 BOOL GetProcRetParam(int nRetId,void * pRetValue,int nRetType = 0); BOOL GetProcRetParam(char * sRetName,void * pRetValue,int nRetType = 0); // 獲取結果集數 int GetResultsetCount() { return m_nResultsetCount; } // 獲取結果集 SybResultset * GetResultset(int nIndex); private: SybServer * m_pSybSvr; // 數據庫實例 int m_nResultsetCount; // 結果集數目 int m_nMaxResultsetCount; // 最大結果集數 SybResultset ** m_Results; // 結果集 };// 游標操作類class SybCursor{public: // 構造函數 SybCursor(SybServer & svr); // 析構函數 ~SybCursor(); // 設置游標選項 void SetOptions(int nCursorType,int nLockType = CUR_OPTCC, int nMaxRow = 1); // 打開游標 int Open(char * sSelectStr); // 關閉游標 void Close(); // 綁定變量 BOOL MapColumn(int nColId, int nBindType, void * pColValue, int nMaxLen); // 移動游標 BOOL GoTop(); BOOL GoBottom(); BOOL GoRow(int nRow); BOOL Next(int nRow = 1); BOOL Prev(int nRow = 1);private: SybServer * m_pSybSvr; // 數據庫實例 DBCURSOR * m_cursor; // 游標實例 DBINT * m_pStatus; // 處理狀態 int m_nCursorType; // 游標類型 int m_nLockType; // 游標鎖類型 int m_nMaxRow; // 游標最大記錄數/次};#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -