mysql的使用

来源:互联网 发布:网络双刃剑政治论文 编辑:程序博客网 时间:2024/06/04 18:54

mysql是公司主要在用的一种数据库,其他大公司也基本在用。在使用tars框架编程的时候,发现公司的svn上大多存在两种写法


在Imp下初始化

使用tars中的TC_Mysql类,直接在Imp中声明_mysql_client对象或者包装成MysqlProxy类,在Imp初始化的时候调用mysql的初始化函数。

include "tc_mysql.h"//初始化TC_Mysql *_mysql_client_mysql_client = new tars::TC_Mysql();_mysql_client->init('host','user','password','dbname','charset','port',0);//执行sqlstring sql = "..."_mysql_client->execute(sql);//读数据tars::TC_Mysql::MysqlData res = _mysql_client->queryRecord(sql);for(auto& a = res.data()){    ////}//写数据tars::TC_Mysql::RECORD_DATA record;record["..."] = DBINT(...);record["..."] = DBSTR(...);_mysql_client->insertRecord('tablename',record);

这是我刚进公司时,写Demo时参考代码的做法,tars框架Server线程就1个,但是每个Servant分配一个线程,我配置了10个Servant就10个线程,就有10个mysql对象。不过数据库加锁的部分有mysql保证,所以这样应该是没有问题的。

使用DbPoolManager

后来看到用同事这样用,使用包装好的DbPoolManager类,在Server中声明并初始化生成连接池,感觉也挺方便的。

#include "DbPoolManager.h"//初始化DbPoolManagerPtr _pDb;_pDb = new DbPoolManager('config','size')   //size为连接池大小_pDb->init();//获取mysql连接tars::TC_mysql *_mysql_client = pDb->getMysqlConnection();//业务处理//..//归还连接pDb->pushMysqlConnection(_mysql_client);
原创粉丝点击