?? sybdblib.hpp
字號(hào):
/* * 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// 數(shù)據(jù)庫(kù)操作信息typedef struct{ int sqlcode; // 最近的錯(cuò)誤 char sqlerrtext[801]; // 最近的錯(cuò)誤信息 char sqlsvrtext[801]; // 最近的服務(wù)器信息 int sqlnrows; // 最近操作的記錄數(shù)} _SQLCA;extern _SQLCA sqlca;// 數(shù)據(jù)庫(kù)服務(wù)器類class SybServer{public: // 構(gòu)造函數(shù) SybServer(DBPROCESS * dbproc = NULL); // 析構(gòu)函數(shù) ~SybServer(); // 設(shè)置輸出文件 static void SetSybLogFile(FILE * pOutFile) { m_pSybLogFile = pOutFile; } // 獲取輸出文件 static FILE * GetSybLogFile() { return m_pSybLogFile; } // 輸出日志信息 static void SybWriteLog(const char * sInfoStr,...); // 檢查環(huán)境初始化狀態(tài) static BOOL IsEnvInited() { return m_bEnvInited; } // 連接數(shù)據(jù)庫(kù) BOOL Open(char * sServer,char * sUserName,char * sPassword); // 連接到數(shù)據(jù)庫(kù)? BOOL IsOpened() { return m_dbproc!=(DBPROCESS *)NULL; } // 獲取數(shù)據(jù)庫(kù)句柄 DBPROCESS * GetInstance() { return m_dbproc; } // 斷開數(shù)據(jù)庫(kù)服務(wù)器 void Close(); // 切換數(shù)據(jù)庫(kù) BOOL SetWrkDb(char * sDatabase); // 事務(wù)處理開始 BOOL BeginTrans(); // 提交事務(wù)處理 BOOL CommitTrans(); // 回滾事務(wù)處理 BOOL RollbackTrans(); // 清空結(jié)果集 void ClearAllResultSet(); private: static BOOL m_bEnvInited; // 數(shù)據(jù)庫(kù)環(huán)境初始化? static FILE * m_pSybLogFile; // 消息輸出文件 static int m_nInstanceCount; // 數(shù)據(jù)庫(kù)實(shí)例數(shù) BOOL m_bAutoClose; // 自動(dòng)關(guān)閉數(shù)據(jù)庫(kù)連接? DBPROCESS * m_dbproc; // 數(shù)據(jù)庫(kù)連接句柄};// 列登記數(shù)據(jù)typedef struct{ int nColId; // 列號(hào) char sColName[40]; // 列名 int nColType; // 列類型 int nColLen; // 列最大長(zhǎng)度 int nComputeId; // 計(jì)算列編號(hào)} SybColumn;// 結(jié)果集類class SybResultset{public: // 構(gòu)造函數(shù) SybResultset(SybServer & svr); // 析構(gòu)函數(shù) ~SybResultset(); // 獲取結(jié)果集 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(); // 當(dāng)前行數(shù)據(jù)是計(jì)算列行? BOOL IsComputeRow(); // 獲取存儲(chǔ)過程返回參數(shù)(nRetId from 1..) BOOL GetProcRetParam(int nRetId,void * pRetValue,int nRetType = 0); BOOL GetProcRetParam(char * sRetName,void * pRetValue,int nRetType = 0); // 返回記錄數(shù) int GetRowCount() { return m_nRowCount; } // 返回列數(shù) int GetColCount() { return m_nColCount; } // 獲取返回參數(shù)數(shù) int GetRetCount() { return m_nRetCount; } // 獲取返回狀態(tài) int GetRetStatus() { return m_nRetStatus; } // 有返回狀態(tài)? BOOL HasRetStatus() { return m_bHasRetStatus; } // 獲取列信息(nIndex from 0..) SybColumn * GetColumn(int nIndex); // 獲取返回參數(shù)信息 SybColumn * GetRetParam(int nIndex);private: SybServer * m_pSybSvr; // 數(shù)據(jù)庫(kù)實(shí)例 int m_nRowCount; // 影響的記錄數(shù) int m_nColCount; // 返回的列數(shù) int m_nRetCount; // 存儲(chǔ)過程返回參數(shù)數(shù) BOOL m_bHasRetStatus; // 存儲(chǔ)過程有返回狀態(tài)? int m_nRetStatus; // 存儲(chǔ)過程返回狀態(tài) SybColumn * m_pColumns; // 列登記信息 SybColumn * m_pRetParams; // 返回參數(shù)信息};// 數(shù)據(jù)庫(kù)命令類class SybCommand{public: // 構(gòu)造函數(shù) SybCommand(SybServer & svr, int nMaxResultsetCount = 255); // 析構(gòu)函數(shù) ~SybCommand(); // 執(zhí)行命令 >0 記錄數(shù) =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); // 獲取數(shù)據(jù) BOOL GetData(); // 檢查有其他結(jié)果集? BOOL HasNextResultSet(); // 當(dāng)前行數(shù)據(jù)是計(jì)算列行? BOOL IsComputeRow(); // 獲取存儲(chǔ)過程返回參數(shù) BOOL GetProcRetParam(int nRetId,void * pRetValue,int nRetType = 0); // 獲取結(jié)果集數(shù) int GetResultsetCount() { return m_nResultsetCount; } // 獲取結(jié)果集 SybResultset * GetResultset(int nIndex); // 執(zhí)行定制的命令 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; // 數(shù)據(jù)庫(kù)實(shí)例 int m_nResultsetCount; // 結(jié)果集數(shù)目 int m_nMaxResultsetCount; // 最大結(jié)果集數(shù) SybResultset ** m_Results; // 結(jié)果集};// 遠(yuǎn)程存儲(chǔ)過程類class SybStoredProc{public: // 構(gòu)造函數(shù) SybStoredProc(SybServer & svr, int nMaxResultsetCount = 255); // 析構(gòu)函數(shù) ~SybStoredProc(); // 準(zhǔn)備存儲(chǔ)過程 BOOL SetProcName(char * sProcName); // 設(shè)置存儲(chǔ)過程參數(shù) 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); // 執(zhí)行存儲(chǔ)過程 int ExecProc(); // 綁定外部變量 BOOL MapColumn(char * sColName, void * pColValue, int nColType = 0); BOOL MapColumn(int nColId, void * pColValue, int nColType = 0, int nComputeId = 0); // 獲取數(shù)據(jù) BOOL GetData(); // 檢查有其他結(jié)果集? BOOL HasNextResultSet(); // 當(dāng)前行數(shù)據(jù)是計(jì)算列行? BOOL IsComputeRow(); // 獲取存儲(chǔ)過程返回參數(shù) BOOL GetProcRetParam(int nRetId,void * pRetValue,int nRetType = 0); BOOL GetProcRetParam(char * sRetName,void * pRetValue,int nRetType = 0); // 獲取結(jié)果集數(shù) int GetResultsetCount() { return m_nResultsetCount; } // 獲取結(jié)果集 SybResultset * GetResultset(int nIndex); private: SybServer * m_pSybSvr; // 數(shù)據(jù)庫(kù)實(shí)例 int m_nResultsetCount; // 結(jié)果集數(shù)目 int m_nMaxResultsetCount; // 最大結(jié)果集數(shù) SybResultset ** m_Results; // 結(jié)果集 };// 游標(biāo)操作類class SybCursor{public: // 構(gòu)造函數(shù) SybCursor(SybServer & svr); // 析構(gòu)函數(shù) ~SybCursor(); // 設(shè)置游標(biāo)選項(xiàng) void SetOptions(int nCursorType,int nLockType = CUR_OPTCC, int nMaxRow = 1); // 打開游標(biāo) int Open(char * sSelectStr); // 關(guān)閉游標(biāo) void Close(); // 綁定變量 BOOL MapColumn(int nColId, int nBindType, void * pColValue, int nMaxLen); // 移動(dòng)游標(biāo) BOOL GoTop(); BOOL GoBottom(); BOOL GoRow(int nRow); BOOL Next(int nRow = 1); BOOL Prev(int nRow = 1);private: SybServer * m_pSybSvr; // 數(shù)據(jù)庫(kù)實(shí)例 DBCURSOR * m_cursor; // 游標(biāo)實(shí)例 DBINT * m_pStatus; // 處理狀態(tài) int m_nCursorType; // 游標(biāo)類型 int m_nLockType; // 游標(biāo)鎖類型 int m_nMaxRow; // 游標(biāo)最大記錄數(shù)/次};#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -