c mysql接口设计_MySQL - MySQL++在c++11环境下接口设计

1 #include "json/json.h"

2 #include

3 #include

4 #include "DMMySQL.h"

5 #include

6

7 #define TRY_SQL \

8 try{9

10 #define CATCH_SQL_ERROR \

11 }\12 catch(const mysqlpp::BadQuery&error)\13 {\14 ACE_DEBUG((LM_ERROR,"MySQL Query error:%s!\n",error.what()));\15 return false;\16 }\17 catch (const mysqlpp::BadConversion&error)\18 {\19 ACE_DEBUG((LM_ERROR,"MySQL Conversion error:%s!\n",error.what()));\20 return false;\21 }\22 catch (const mysqlpp::Exception&error)\23 {\24 ACE_DEBUG((LM_ERROR,"MySQL Exception error:%s!\n",error.what()));\25 return false;\26 }27

28 DMMySQL::DMMySQL()29 {30 init();31 }32

33 DMMySQL::~DMMySQL()34 {35 disconnect_mysql();36 }37

38 boolDMMySQL::load_mysql_config()39 {40 std::ifstream cfg_file;41 cfg_file.open(MYSQL_CFG_FILE, std::ios::binary);42

43 if (!cfg_file.is_open())44 {45 return 0;46 }47

48 Json::Reader Reader;49 Json::Value Root;50

51 if(Reader.parse(cfg_file,Root))52 {53 _mysql_cfg.ip = Root["mysql_ip"].asString();54 _mysql_cfg.port = Root["mysql_port"].asInt();55 _mysql_cfg.user = Root["mysql_user"].asString();56 _mysql_cfg.passwd = Root["mysql_passwd"].asString();57 _mysql_cfg.database_name = Root["database_name"].asString();58 }59 else

60 {61 ACE_DEBUG((LM_ERROR,"parse mysql config file failure!\n"));62 return false;63 }64

65 return true;66 }67

68 voidDMMySQL::init()69 {70 if(load_mysql_config())71 {72 conncet_mysql();73 }74 }75

76 boolDMMySQL::conncet_mysql()77 {78 if (!_conn.connect(_mysql_cfg.database_name.c_str(), _mysql_cfg.ip.c_str(),79 _mysql_cfg.user.c_str(), _mysql_cfg.passwd.c_str(), _mysql_cfg.port))80 {81 ACE_DEBUG((LM_ERROR,"connect MySQL database failure!\n"));82 return false;83 }84

85 return true;86 }87

88 void DMMySQL::show_databases_info(int flag, std::vector<:string>&databases)89 {90 std::stringopration;91

92 switch(flag)93 {94 caseSHOW_VERISON:95 {96 std::string version_info =_conn.client_version();97 databases.push_back(version_info);98 return;99 }100 caseSHOW_DATABASES:101 {102 opration = "show databases";103 break;104 }105 caseSHOW_TABLES:106 {107

108 opration = "show tables";109 break;110 }111 default:112 {113 return;114 }115 }116

117 mysqlpp::Query query =_conn.query(opration);118 if (mysqlpp::StoreQueryResult res =query.store())119 {120 mysqlpp::StoreQueryResult::iterator rit;121 for (rit = res.begin(); rit != res.end(); ++rit)122 {123 databases.push_back((*rit)[0].c_str());124 }125 }126 }127

128 bool DMMySQL::get_table_desc(std::string table_name, mysql_table_info&tbl_info)129 {130 TRY_SQL131 std::string opration = "describe" +table_name;132 mysqlpp::Query query =_conn.query(opration);133 mysqlpp::StoreQueryResult res =query.store();134

135 int field_num =res.size();136 for (int i = 0; i < field_num; ++i)137 {138 mysql_field_info field_i;139

140 field_i.Field = res[i]["field"].c_str();141 field_i.Type = res[i]["type"].c_str();142 field_i.Null = res[i]["null"].c_str();143 field_i.Key = res[i]["key"].c_str();144 field_i.Default = res[i]["default"].c_str();145 field_i.Extra = res[i]["extra"].c_str();146

147 tbl_info.push_back(field_i);148 }149 CATCH_SQL_ERROR150 return true;151 }152

153 voidDMMySQL::disconnect_mysql()154 {155 _conn.disconnect();156 }157

158 bool DMMySQL::insert_mysql(std::stringsql)159 {160 TRY_SQL161 mysqlpp::Query query =_conn.query(sql);162 query.execute();163 CATCH_SQL_ERROR164 return true;165 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值