?
.
|-- 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;
}
?
?
代码在附件中
?
 相关文章
                            相关文章