123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572 |
- /**
- * @brief
- 数据库结果集类
- * @version
- V 1.0.0
- * @author
- * @date
- 创建时间: 2018-04-18\n
- * @note
- 2018-04-18 创建类。\n
- * @warning
- * @bug
- */
- #pragma once
- #include <string>
- #include <map>
- #include <mysql.h>
- #include "CDBCommon.h"
- #include "CDBHelper.h"
- namespace YADB
- {
- class CDBResultSet
- {
- friend class CDBConnect;
- private:
- MYSQL_RES* __pQueryRes;//结果集
- MYSQL_ROW __CurRow;//当前记录行
- int __FieldCount;//字段的个数
- CDBHelper __DBHelper;//助手
- std::map<std::string,int> __FNameIndexList;//字段名和字段下标对应列表(key是字段名,value是字段下标)
- private:
- /**
- * @brief
- 构建字段名字段下标对应列表函数。
- * @note
- * @warning
- * @bug
- */
- void __BuildFNameIdxLst();
- /**
- * @brief
- 获得原始字符串值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] char* szValue 获得的原始字符串值\n
- * @param [out] bool& IsNull 是否为空\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool __GetField( int fdIndex, char*& szValue, bool& IsNull, std::string& Error );
- public:
- CDBResultSet();
- ~CDBResultSet();
- /**
- * @brief
- 绑定到一个MYSQL结果集函数。
- * @param [in] MYSQL_RES *pQueryRes MYSQL结果集\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回绑定到一个MYSQL结果集是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool Bind( MYSQL_RES *pQueryRes, std::string& Error );
- /**
- * @brief
- 关闭函数。
- * @param 无\n
- * @return 无\n
- * @note
- * @warning
- * @bug
- */
- void Close();
- /**
- * @brief
- 查找数据函数。
- * @param [in] my_ulonglong Offset 偏移量\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回查找数据是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool SeekData( my_ulonglong Offset, std::string& Error );
- /**
- * @brief
- 获得下一条记录函数。
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得下一条记录是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetNextRecod( std::string& Error );
- /**
- * @brief
- 获得记录数函数。
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得的记录数
- * @return >=0 成功\n
- * @return -1 失败\n
- * @note
- * @warning
- * @bug
- */
- my_ulonglong GetRecordCount( std::string& Error );
- /**
- * @brief
- 获得int字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] int& value 获得的int字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, int& value, std::string& Error );
- /**
- * @brief
- 获得unsigned int字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] unsigned int& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, unsigned int& value, std::string& Error );
- /**
- * @brief
- 获得long long字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] long long& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, long long& value, std::string& Error );
- /**
- * @brief
- 获得std::string字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] std::string& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, std::string& value, std::string& Error );
- /**
- * @brief
- 获得char*字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] char* value 获得的字段值\n
- * @param [in] int Length value的最大长度\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, char* value, int Length, std::string& Error );
- /**
- * @brief
- 获得bool字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] bool& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, bool& value, std::string& Error );
- /**
- * @brief
- 获得float字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] float& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, float& value, std::string& Error );
- /**
- * @brief
- 获得double字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] double& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, double& value, std::string& Error );
- /**
- * @brief
- 获得MYSQL_TIME字段值函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] MYSQL_TIME& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( int fdIndex, MYSQL_TIME& value, std::string& Error );
- /**
- * @brief
- 根据字段名获得字段下标函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得的字段下标
- * @return >=0 成功\n
- * @return -1 失败\n
- * @note
- * @warning
- * @bug
- */
- int GetFdIndexByName( const char* fdName, std::string& Error );
- /**
- * @brief
- 根据字段名获得int字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] int& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, int& value, std::string& Error );
- /**
- * @brief
- 根据字段名获得long long字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] long long& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, long long& value, std::string& Error );
- /**
- * @brief
- 根据字段名获得unsigned int字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] unsigned int& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, unsigned int& value, std::string& Error );
- /**
- * @brief
- 根据字段名获得string字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] std::string& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, std::string& value, std::string& Error );
- /**
- * @brief
- 根据字段名获得char*字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] char* value 获得的字段值\n
- * @param [in] int Length value的长度\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, char* value, int Length, std::string& Error );
- /**
- * @brief
- 根据字段名获得bool字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] bool& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, bool& value, std::string& Error );
- /**
- * @brief
- 根据字段名获得float字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] float& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, float& value, std::string& Error );
- /**
- * @brief
- 根据字段名获得double字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] double& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, double& value, std::string& Error );
- /**
- * @brief
- 根据字段名获得MYSQL_TIME字段值函数。
- * @param [in] const char* fdName 字段名\n
- * @param [out] MYSQL_TIME& value 获得的字段值\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回获得字段值是否成功
- * @return true 成功\n
- * @return false 失败\n
- * @note
- * @warning
- * @bug
- */
- bool GetField( const char* fdName, MYSQL_TIME& value, std::string& Error );
- /**
- * @brief
- 判断字段是否为空函数。
- * @param [in] int fdIndex 字段下标\n
- * @param [out] std::string& Error 错误信息\n
- * @return 返回字段是否为空
- * @return 1 为空\n
- * @return 0 不为空\n
- * @return -1 有错误\n
- * @note
- * @warning
- * @bug
- */
- int IsNull( int fdIndex, std::string& Error );
- };
- }
|