#ifndef MYSQLMYHANDLER_H
#define MYSQLMYHANDLER_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define MAX_CON_COUNT 10;
struct Conn_name_stat
{
QString con_name;
bool is_available; //连接是否空闲可以使用
};
//需要加上static 不然出现 multiple define error
//向量实现动态存储 ,存储最大十10个连接名,和连接名是否可以使用的状态值
//每次调用api的时候从设置,断开连接的时候删除元素
static vector g_v_conn_name_stat;
struct DBServInfo
{
QString hostname;
QString username;
QString password;
QString dbname;
int port;
QString socket;
unsigned long clientflag;
};
class Connect_Manager{
private:
static Connect_Manager* instance;
static Connect_Manager* getInstance()
{
if(instance==NULL)
{
instance = new Connect_Manager;
return instance;
}
else {
return instance;
}
}
Connect_Manager(){}
struct DBServInfo
{
QString hostname;
QString username;
QString password;
QString dbname;
int port;
QString socket;
unsigned long m_clientflag;
};
//存放连接的状态,和线程id
//vector serv_conn;
enum
{
MYSQL_USER_STATUS_INIT = 0,
MYSQL_USER_STATUS_READY,
MYSQL_USER_STATUS_BUSY,
mysql_user_status_TRAN,
MYSQL_USER_STATUS_FAILE,
};
bool m_conn_state; //当前用户的连接状态
int m_index; //当前用户连接的序号
};
class MysqlMyHandler
{
public:
MysqlMyHandler();
~ MysqlMyHandler();
void initConn(QString& hostname,QString& username,QString& password,QString& dbname,
int& port,QString& socket,unsigned long& m_clientflag,QString& conn_name);
bool insertData(const QString tablename,QVariantMap map);
bool deleteData(const QString sqlstatement);
bool updateData(const QString sqlstatement);
const QSqlResult* selectData(const QString& sqlstatement);
//按照指定行排列,参数:1.一条sql语句;2. order by 的行字段,order by 子句在最后
const QSqlResult* selectDataOrder(const QString& table_name, const QString &col_name);
//sql 语句 解析封装后再执行基础操作
bool SqlStatementDelete(const QString tablename,const QString exp);
bool SqlStatementUpdate(const QString tablename,const QString exp);
bool deleteAllDataByTruncate(const QString tablename);
bool deleteAllDataByDelete(const QString tablename);
// 返回值: 查询结果集; 参数 :SQL 查询语句
void setDBConn(); //设置mysql服务器参数
void closeConn();
// 支持 多条SQL语句的分割,以供调用基础接口函数使用
//返回解析的字符串
const QSqlResult* multilSqlStatemtSelect(const QString& sqlstatement);
bool checkDBStatus(QString conname);
QMap getTableInfo(QString table);
bool openState;
// Conn_name_stat m_conn_name_stat[10]; //预先设置10个可以使用的连接,当启用1一个连接的时候设置一个连接,同时不能超出了最大容量10
void printTableStruct(QString tablename);
bool hasFeaturesofTransaction();
bool startTransaction();
bool commitTransaction();
private:
QString m_mysqlInput;
QSqlDatabase m_db;
QSqlQuery m_myquery;
QString m_hostName;
QString m_userName;
QString m_password;
QString m_dbname;
int m_port;
QString m_socket;
unsigned long m_clientflag;
/*
struct DBServInfo
{
QString hostname;
QString username;
QString password;
QString dbname;
int port;
QString socket;
unsigned long clientflag;
};
*/
QString m_conn_name;
};
#endif // MYSQLMYHANDLER_H
一键复制
编辑
Web IDE
原始数据
按行查看
历史