mysql的使用

xiaoxiao2021-02-28  67

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); //执行sql string 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);
转载请注明原文地址: https://www.6miu.com/read-74190.html

最新回复(0)