Demo:C++操作MySql

来源:互联网 发布:系统功能开发 java 编辑:程序博客网 时间:2024/05/17 00:04

好久没写东西了,上几天想起数据库操作了,用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…

0 0
原创粉丝点击