DataBase.h

#ifndef DATABASE_H

#define DATABASE_H

#include <mysql/mysql.h>


class DataBase{

  private:

const char * user;

const char * password;

const char * host;

const char * database;

MYSQL * mysql;

  public:

DataBase(const char * user, const char * password, const char * host, const char * database);

~DataBase();

bool connection();

bool query(const char * sql);

bool del(const char * sql);

bool insert(const char * sql);

bool update(const char * sql);

MYSQL_RES * get_res();

};


#endif


DataBase.cpp

#include <stdio.h>

#include "database.h"


DataBase::DataBase(const char * user, const char * password, const char * host, const char * database){

this->user = user;

this->password = password;

this->host = host;

this->database = database;


DataBase::~DataBase(){


mysql_close(mysql);

}


bool DataBase::connection(){


mysql = mysql_init(NULL);

if(mysql_real_connect(mysql, host, user, password, database, 3306, NULL, 0)){

return true;

}else{

return false;

}

}


bool DataBase::query(const char * sql){


return mysql_query(mysql, sql) == 0;

}


bool DataBase::del(const char * sql){

return mysql_query(mysql, sql) == 0;

}


bool DataBase::insert(const char * sql){


return mysql_query(mysql, sql) == 0;

}


bool DataBase::update(const char * sql){


return mysql_query(mysql, sql) == 0;

}


MYSQL_RES * DataBase::get_res(){


MYSQL_RES * result = mysql_store_result(mysql);

if(!result){

return NULL;

}

return result;

}


测试 test.cpp

#include "database.h"

#include <iostream>


using namespace std;



const char * user = "root";

const char * password = "root";

const char * host = "localhost";

const char * database = "test_cpp";

unsigned int port = 3306;


DataBase * db;


void test_query(){



if(db->query("select * from person")){

MYSQL_RES * res = db->get_res();

if(!res){


cout << "get res error" << endl;

}else{

int col_len = mysql_num_fields(res);

MYSQL_FIELD * field = mysql_fetch_fields(res);

cout << "field:\t";

for(int i = 0; i < col_len; ++i){

cout << field[i].name << " ";

}

cout << endl;

MYSQL_ROW row;

while(row = mysql_fetch_row(res)){

cout << "row:\t";

for(int j = 0; j < col_len; ++j){

cout << row[j] << " ";

}

cout << endl;  

}

}


}else{


cout << "query error" << endl;


}

}


void test_insert(){



if(db->insert("insert into person values('6', 'testtest', '66666')")){

cout << "insert successfully" << endl;

}else{

cout << "insert error" << endl;

}


}



void test_update(){


if(db->update("update person set name = 'test66666' where id = 6")){

cout << "update successfully" << endl;

}else{

cout << "update error" << endl;

}


}


void test_del(){



if(db->del("delete from person where id = 6")){

cout << "delete successfully" << endl;

}else{

cout << "delete error" << endl;

}


}


int main(){


db = new DataBase(user, password, host, database);


if(db->connection()){

cout << "connect database  successfully" << endl;

}else{

cout << "fail" << endl;

}


cout << "------------------------------" << endl;

cout << "before inserting data" << endl << endl;

test_query();


test_insert();

cout << "------------------------------" << endl;

cout << "after inserting data of id = 6, name = testtest, phone = 66666" << endl << endl;

test_query();

test_update();

cout << "------------------------------" << endl;

cout << "after updating data of name = test66666 where id = 6  " << endl << endl;

test_query();

test_del();

cout << "------------------------------" << endl;

cout << "after deleting data id = 6" << endl << endl;

test_query();


delete db;


return 0;





}


Result

38f7c0fbe8238720add5a2384344d0c.png