?
.
|-- Makefile
|-- include
| ? |-- mysql_conn.h
| ? `-- sns_concern.h
|-- lib
| ? |-- Db
| ? | ? |-- Makefile
| ? | ? `-- mysql_conn.cpp
| ? |-- Makefile
| ? |-- sns_concern.cpp
| ? `-- sns_concern.o
|-- ma2
|-- ma2.cpp
`-- ma2.o
?
?
头文件:
#ifndef MYSQL_CONN_H #define MYSQL_CONN_H #include <iostream> #include <string> #include <mysql++.h> using namespace std; using namespace mysqlpp; class mypool: public mysqlpp::ConnectionPool { public: char * _user; char * _pwd; char * _host; char * _db; mypool(char* user, char* pwd, char* host, char* db) ; ~mypool(); Connection* create(); void destroy(Connection *cp); unsigned int max_idle_time(); int get_pool_size(); }; class mysql_conn { public: mypool *myptr; Connection *con; mysql_conn(string dbid, char *charset); ~mysql_conn(); StoreQueryResult mysql_query(string query_str, SQLQueryParms params=NULL); int mysql_execute(string query_str,SQLQueryParms params=NULL); int get_insert_id(); static mysql_conn get_instance(string dbid); void hello(); int commit(); int rollback(); }; #endif
?
cpp文件
#include <iostream> #include <map> #include <mysql++.h> #include "mysql_conn.h" using namespace std; using namespace mysqlpp; mypool::mypool(char* user, char* pwd, char* host, char* db) { _user = user; _pwd = pwd; _host = host; _db = db; } mypool::~mypool() { clear(); } Connection* mypool::create() { return new Connection(_db, _host, _user, _pwd); } void mypool::destroy(Connection *cp) { delete cp; } unsigned int mypool::max_idle_time() { return 60; } int mypool::get_pool_size() { return this->size(); } map<string,mypool *> dbpoolmap; mysql_conn mysql_conn::get_instance(string dbid) { char *user = "poker_wrt"; char *pwd = "poker_wrt"; char *host = "192.168.0.246"; char *db = "test"; char *charset = "gbk"; if(dbpoolmap.count(dbid) == 0) { dbpoolmap[dbid] = 0; } if (0 == dbpoolmap[dbid]) { dbpoolmap[dbid] = new mypool(user, pwd, host, db); } mysql_conn instance(dbid,charset); return instance; } mysql_conn::mysql_conn(string dbid, char *charset) { myptr = dbpoolmap[dbid]; con = myptr->grab(); string str = "set names " ; str = str + charset; this->mysql_execute(str); this->mysql_execute("set autocommit=0"); } mysql_conn::~mysql_conn() { cout << "in destruct func" << endl; myptr->release(con); } void mysql_conn::hello() { cout << "from hello" << endl; } StoreQueryResult mysql_conn::mysql_query(string query_str, SQLQueryParms params) { Query query = con->query(query_str); query.parse(); StoreQueryResult res = query.store(params) ; return res; } int mysql_conn::mysql_execute(string query_str,SQLQueryParms params) { Query query = con->query(query_str); query.parse(); query.execute(params); return query.affected_rows(); } int mysql_conn::get_insert_id() { Query query = con->query(); return query.insert_id(); } int mysql_conn::commit() { Transaction trans(*con); trans.commit(); return 1; } int mysql_conn::rollback() { Transaction trans(*con); trans.rollback(); return 1; }?
?
代码在附件中
?