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

用c++ 操作mysql 数据库类

原文地址:http://www.lajidui.com/node/266/ 在有大量节点访问的数据库设计中,经常要使用到连接池来管理所有的连接. 一般方法是:建立两个连接句柄队列,空闲的等待使...
  • w77603422
  • w77603422
  • 2013年08月30日 20:30
  • 1515

mysql数据库CRUD操作

数据的操作:DML 创建数据(插入数据): insert into tbl_name(字段列表) values(值列表) >insert into exam_student (name, stu...
  • pangqiandou
  • pangqiandou
  • 2016年11月19日 22:11
  • 867

C++操作MySQL例子(1)

//vc6.0编译成功 无措 复制代码的时候注意编码全角半角问题 #include "stdafx.h" #include #include #include #pragma comment(...
  • goodai007
  • goodai007
  • 2011年09月19日 16:44
  • 11046

C++ 读写MySQL经典

       看过很多C或是C++操作MySQL数据库的文章,大部分太吃力了,甚至有一部分根本没有很好的组织文字,初学者比较难以接受,即使是C++或是C高手也是比较难看懂。写这篇文章的目的不是别的,就...
  • jemlee2002
  • jemlee2002
  • 2007年03月07日 13:45
  • 58852

C++ 操作MySql数据库实例讲解

学了这么久C++,数据库访问部门一直没有多做了解,近来闲着,打算补上这一处的空白。于是果断的在Fedora 14上安装了数据库mysql,做测试之用。以下鄙人就将实验操作的过程总结一下,整理如下: ...
  • android_lover2014
  • android_lover2014
  • 2016年10月09日 19:33
  • 810

JDBC简单操作Demo

JDBC: Java DataBase Connectivity本文主要介绍曹总基本步骤, 包括链接,增删改查. 详细见注释import java.sql.*; import java.sql.Co...
  • Dextrad_ihacker
  • Dextrad_ihacker
  • 2016年11月19日 22:51
  • 578

C++操作mysql方法总结(1)

C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作mysql的两种方式   使用vs2013和64位的msql 5.6.16进行操作 ...
  • Lostyears
  • Lostyears
  • 2016年10月12日 10:31
  • 628

mongodb的一些基本操作以及c++驱动的简单方法

一、一些数据操作 1、集合中的字段不需要提前设置,可以随时增减。 2、增加字段update({文档筛选条件},{$set:{新字段,如果字段名已存在则替换}}) 3、删除字段upate({文档筛...
  • lixin_4055
  • lixin_4055
  • 2015年03月19日 11:58
  • 1068

MySQL Connector/C++ 例子(一)

/* Copyright 2008, 2010, Oracle and/or its affiliates. All rights reserved. This program is free so...
  • chenxun2009
  • chenxun2009
  • 2017年04月02日 22:17
  • 721

C++操作mysql数据库

C++ 操作mysql数据库
  • byxdaz
  • byxdaz
  • 2017年07月14日 18:12
  • 873
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Demo:C++操作MySql
举报原因:
原因补充:

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