簡易mysql運維 mysql 簡易封裝類

2021-10-19 16:18:13 字數 4239 閱讀 6685

快半年沒更新部落格了,發表篇文章 不能荒廢了。 之前堅持了兩年寫部落格的  中斷了的話 有點可惜。

這個類不是執行緒安全版本請注意了 只是單例項

先看下目錄結構  源**打包放附件中

|-- makefile

|-- include

|   |-- mysql_conn.h

|   `-- sns_concern.h

|-- lib

|   |-- db

|   |   |-- makefile

|   |   |-- mysql_conn.cpp

|   |   `-- mysql_conn.o

|   |-- makefile

|   |-- sns_concern.cpp

|   `-- sns_concern.o

|-- ma2

|-- ma2.cpp

|-- ma2.o

`-- maketest

是乙個完整的demo,makefile寫的感覺有點挫。

現在貼出mysql_conn.cpp  和 實際使用它的檔案 sns_concern.cpp

mysql_conn.cpp

#include

#include

#include

#include "mysql_conn.h"

using namespace std;

using namespace mysqlpp;

mysql_conn * mysql_conn::instance = null;

mysql_conn * mysql_conn::get_instance()

char *user = "poker_wrt";

char *pwd = "poker_wrt";

char *host = "192.168.0.246";

char *db = "test";

char *charset = "gbk";

if (null == mysql_conn::instance)

instance = new mysql_conn(db, user, pwd, host, charset);

return instance;

mysql_conn::mysql_conn(char *db, char *username, char *password,char *host, char *charset)

if ( !con.connect(db, host, username, password))

cout << "connect mysql error"<< endl;

string str = "set names " ;

str = str + charset;

this->mysql_execute(str);

this->mysql_execute("set autocommit=0");

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;

sns_concern.cpp

#include

#include

#include

#include "sns_concern.h"

using namespace std;

using namespace mysqlpp;

int sns_concern::add(int uid, string username, int uid_by, string username_by)

string insert_str = "insert into t_user_concern \

(f_uid,f_username,f_concern_uid,f_concern_username) \

values(%0q,%1q,%2q,%3q)";

sqlqueryparms params2;

int nums;

params2 += uid;

params2 += username;

params2 += uid_by;

params2 +=  username_by;

mysql_conn *p1 = mysql_conn::get_instance();

nums = p1->mysql_execute(insert_str,params2);

p1->commit();

return nums;

int sns_concern::del(int uid, int uid_by)

string del_str = "delete from t_user_concern where f_uid = %0q and f_concern_uid = %1q";

sqlqueryparms params2;

int nums;

params2 += uid;

params2 += uid_by;

mysql_conn *p1 = mysql_conn::get_instance();

nums = p1->mysql_execute(del_str,params2);

p1->commit();

return nums;

storequeryresult sns_concern::get(int uid)

string select_str = "select f_uid uid,f_username username,f_concern_uid concern_uid,\

f_concern_username concern_username from t_user_concern\

where f_uid = %0q";

sqlqueryparms params2;

params2 += uid;

mysql_conn *p1 = mysql_conn::get_instance();

return p1->mysql_query(select_str,params2);

使用的表的sql語句在這裡:

create table `t_user_concern` (

`f_uid` int(10) unsigned not null comment '使用者id',

`f_username` varchar(255) not null comment '使用者名稱',

`f_concern_uid` int(10) unsigned not null comment '使用者id',

`f_concern_username` varchar(255) not null comment '使用者名稱',

`f_instime` datetime default null comment '插入時間',

`f_uptime` datetime default null comment '更新時間'

) engine=innodb default charset=utf8 comment='使用者關注表'

mysql常用運維 mysql 運維常見操作

mysql密碼的恢復方法之一 1 首先確認伺服器出於安全的狀態,也就是沒有人能夠任意地連線mysql資料庫。因為在重新設定mysql的root密碼的期間,mysql資料庫完全出於沒有密碼保護的 狀態下,其他的使用者也可以任意地登入和修改mysql的資訊。可以採用將mysql對外的埠封閉,並且停止ap...

mysql常用運維 (MYSQL常用運維指令)

1 mysql執行狀態 service mysqld status service mysqld start service mysqld stop 2 檢視sql程序,清理sql程序 show full processlist kill 2920578 3 賬號建立 資料庫授權 4 密碼修改 my...

MySQL 日常運維

正規化和反正規化 正規化和反正規化是庫表設計過程中的概念 目前關聯式資料庫有六種正規化,越高的正規化資料庫冗餘越小 正規化化可以較少冗餘,從而減少了在更新資料時一致性方面的開銷 反正規化化由於冗餘的資料,在複雜的查詢場景下,可以避免聯合查詢和子查詢,提高查詢的效率 根據業務場景,選擇合適的正規化等級...