📄 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 + -