Demo:C++操作MySql

原创 2015年11月20日 19:53:00

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

版权声明:本文为博主原创文章,转载请标明出处 http://blog.csdn.net/learning_notes

相关文章推荐

Mybatis入门 操作MySQL DEMO

简介 Mybatis 是对数据库操作进行封装的一个框架。 Mybatis依赖包 - mybatis-3.2.8.jar mysql驱动包 - mysql-connector-java-5.1.29.j...

C操作mysql demo

  • 2014年04月27日 12:15
  • 2KB
  • 下载

jdbc操作Mysql数据库demo

  • 2015年11月20日 14:06
  • 679KB
  • 下载

c++操作mysql的API函数详解

可以参考一下两个资源: 1,通俗易懂http://www.php.net/manual/zh/function.mysql-query.php 2,官网参考手册 http://dev.mysql.c...

scala_slick操作mysql数据库demo

  • 2015年10月12日 10:49
  • 81KB
  • 下载

c++操作mysql坎坷的旅程

1,windows下安装mysql,用mysql-installer,https://dev.mysql.com/downloads/windows/installer/5.6.html2,安装3,启...
  • fk1174
  • fk1174
  • 2017年03月25日 15:19
  • 184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Demo:C++操作MySql
举报原因:
原因补充:

(最多只允许输入30个字)