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
Comments