好久没写东西了,上几天想起数据库操作了,用C++基于MySql写了个Demo。主要包含对数据库的 增、删、改、查 基本操作,如有不当请留言。 分享代码如下:
Sql.h:
#ifndef _SQL_H_
#define _SQL_H_
#include <iostream>
#include "mysql.h"
using namespace std;
class SQL
{
public:
SQL();
~SQL();
void InitMysqlInfo();
bool Connect_to_Mysql(MYSQL &mysql);
void Operate_Mysql_Modify(MYSQL &mysql, const char *Mysql_Sentence);
void Operate_Mysql_Query(MYSQL *mysql, const char *Mysql_Sentence);
void Disconnect_to_Mysql(MYSQL *mysql);
MYSQL mysql;
private:
const char *user; //username
const char *pswd; //password
const char *host; //host address
const char *database; //database
unsigned int port; //server port
};
#endif
Sql.cpp:
#include "Sql.h"
SQL::SQL()
{
user = new char[];
pswd = new char[];
host = new char[];
database = new char[];
InitMysqlInfo();
}
SQL::~SQL()
{
user = nullptr;
delete user;
pswd = nullptr;
delete pswd;
host = nullptr;
delete host;
database = nullptr;
delete database;
}
void SQL::InitMysqlInfo()
{ //和自己数据库设置有关
user = "root";
pswd = "admin";
host = "数据库所在机器IP地址";
database = "test";
port = 3306;
}
bool SQL::Connect_to_Mysql(MYSQL &mysql)
{
//初始化数据结构
mysql_init(&mysql);
//在连接数据库之前,设置额外的连接选项
//可以设置的选项很多,这里设置字符集,否则无法处理中文
if (0 == mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"))
{
cout << "mysql_options() succeed" << endl;
}
else
{
cout << "mysql_options() failed" << endl;
}
if (&mysql != nullptr && mysql_real_connect(&mysql,host,user,pswd,database,port,nullptr,0))
{
cout << "Connect_to_Mysql Success" << endl;
return true;
}
else
{
cout << "Connect_to_Mysql Failed" << endl;
cout << mysql_error(&mysql) << endl;
return false;
}
}
void SQL::Operate_Mysql_Modify(MYSQL &mysql, const char *Mysql_Sentence)
{
if (0 == mysql_query(&mysql, Mysql_Sentence))
{
cout << "Operate_Mysql Modify Success" << endl;
}
else
{
cout << "Operate_Mysql Modify Failed" << endl;
cout << mysql_error(&mysql) << endl;
}
}
void SQL::Operate_Mysql_Query(MYSQL *mysql, const char *Mysql_Sentence)
{
if (0 == mysql_query(mysql, Mysql_Sentence))
{
cout << "Operate_Mysql Query Success" << endl;
MYSQL_RES *result = nullptr;
result = mysql_store_result(mysql);
unsigned int rows = (unsigned int)mysql_num_rows(result);
cout << "总记录条数: " << rows << endl;
unsigned int fields = mysql_num_fields(result);
cout << "每条记录总共 " << fields << " 个字段" << endl;
MYSQL_FIELD *field = nullptr;
for (unsigned int i = 0; i < fields; i++)
{
field = mysql_fetch_field_direct(result, i);
cout << field->name << "\t\t";
}
cout << endl;
MYSQL_ROW row = nullptr;
row = mysql_fetch_row(result);
while (nullptr != row)
{
for (unsigned int i = 0; i < fields; ++i)
{
if (row[i] != nullptr)
cout << row[i] << "\t\t";
else
cout << "null" << "\t\t";
}
cout << endl;
row = mysql_fetch_row(result);
}
mysql_free_result(result);
}
else
{
cout << "Operate_Mysql Query Failed" << endl;
cout << mysql_error(mysql) << endl;
}
}
void SQL::Disconnect_to_Mysql(MYSQL *mysql)
{
mysql_close(mysql);
}
main.cpp.
#include "Sql.h"
int main()
{
SQL Mysql;
cout << "初始化数据库" << endl;//初始化数据库
if (0 == mysql_library_init(0, NULL, NULL))
cout << "mysql_library_init() succeed" << endl;
else
cout << "mysql_library_init() failed" << endl;
cout << "连接数据库" << endl;
if (Mysql.Connect_to_Mysql(Mysql.mysql))
{
cout << "新建表" << endl; //新建表
Mysql.Operate_Mysql_Modify(Mysql.mysql, "create table if not exists\
test_table(id int(4), name varchar(20) character set gb2312 collate gb2312_chinese_ci)");
cout << "添加记录" << endl; //添加记录
Mysql.Operate_Mysql_Modify(Mysql.mysql, "insert into test_table\
values(1, 'aaa'), (2, 'bbb'), (3, 'ccc')");
Mysql.Operate_Mysql_Modify(Mysql.mysql, "insert into test_table(id)\
values(11), (22), (33)");
cout << "查找记录" << endl; //查找记录
Mysql.Operate_Mysql_Query(&Mysql.mysql, "select * from test_table\
where id = 22");
Mysql.Operate_Mysql_Query(&Mysql.mysql, "select * from test_table");
cout << "修改记录" << endl; //修改记录
Mysql.Operate_Mysql_Modify(Mysql.mysql, "update test_table\
set id = 22\
where name = 'aaa'");
cout << "修改表明" << endl; //修改表明
Mysql.Operate_Mysql_Modify(Mysql.mysql, "alter table test_table rename re_test_table");
cout << "删除记录" << endl; //删除记录
Mysql.Operate_Mysql_Modify(Mysql.mysql, "delete from re_test_table\
where id = 2");//删除表中的特定条件的记录
cout << "清空表" << endl; //清空表
Mysql.Operate_Mysql_Modify(Mysql.mysql, "truncate table re_test_table");//删除表中的所有数据记录,清空表
// Mysql.Operate_Mysql_Modify(Mysql.mysql, "delete from test_table");//删除表中的所有数据记录,清空表
cout << "删除表" << endl; //删除表
Mysql.Operate_Mysql_Modify(Mysql.mysql, "drop table re_test_table");//删除表
cout << "断开连接" << endl; //断开连接
Mysql.Disconnect_to_Mysql(&Mysql.mysql);
}
else
{
cout << "Error...Failed to connect to Mysql !" << endl;
}
mysql_library_end();
system("pause");
return 0;
}
Coding…