clion / IDEA 使用mysql数据库的一些基本操作

这里以clion为例,不过此方法完全适用idea

连接数据库

IDEA如何连接mysql?
Clion的连接方式和IDEA的连接方式是一样的,直接看这个博客吧

建库

clion / IDEA 使用mysql数据库的一些基本操作_第1张图片
clion / IDEA 使用mysql数据库的一些基本操作_第2张图片

建表

clion / IDEA 使用mysql数据库的一些基本操作_第3张图片
clion / IDEA 使用mysql数据库的一些基本操作_第4张图片

编辑表格

clion / IDEA 使用mysql数据库的一些基本操作_第5张图片
clion / IDEA 使用mysql数据库的一些基本操作_第6张图片
这里说的选中格子指的是需要 手动 点击格子,习惯了tab键的我内心是有点崩溃的

修改字段名

clion / IDEA 使用mysql数据库的一些基本操作_第7张图片

查询数据

这一步是在console里操作的
在这里插入图片描述clion / IDEA 使用mysql数据库的一些基本操作_第8张图片
反正我这辈子是不可能再去cmd里敲命令了!舒服~
除了查询数据,之前提到的建库,建表,删库等等,也都可以在这里完成

插入新的数据

clion / IDEA 使用mysql数据库的一些基本操作_第9张图片
clion / IDEA 使用mysql数据库的一些基本操作_第10张图片
当然点表格里的同样的按钮刷新也是一样的


clion工程连接mysql数据库

找到mysql下的这两个文件,复制他们的路径到自己的工程的CMakeList.txt里

clion / IDEA 使用mysql数据库的一些基本操作_第11张图片

注意:路径里面的空格前面都需要加 \

把libmysql.dll和libmysql.lib这两个文件拷贝到cmake-build-debug文件夹里

clion / IDEA 使用mysql数据库的一些基本操作_第12张图片

然后就能使用mysql.h了


C++ API方式连接mysql数据库实现增删改查
C++中string、char *、char[]的转换
mysql之char和varchar的区别
菜鸟教程 - MySQL 教程


sql常用语句

create database 数据库名; // 建库
use 数据库名; // 选择数据库
create table 数据表名 (column_name column_type); // 建表
insert into 数据表名 ( field1, field2,...fieldN ) values ( value1, value2,...valueN ); // 插入数据
select column_name,column_name from table_name [where Clause] [LIMIT N][ OFFSET M]; // 查询数据
delete from 表名 where 条件; //删除数据
update 数据表名 set 字段名 =where 条件; // 修改数据
alter table 数据表名 change 原字段名 新字段名 新字段的类型 ; //修改字段

代码

//--------------这部分放头文件----------------------
#include 
#include 
using namespace std;

MYSQL mysql;
MYSQL_RES *res;//这个结构代表返回行的一个查询结果集
MYSQL_ROW column;//一个行数据的类型安全(type-safe)的表示

void textMysql();//测试方法
bool ConnectMysql();//连接数据库
bool QueryDatabase(string sql);//查询并输出结果
void outMysql();//输出查询结果
bool updateData(string sql);//插入删除修改操作
void FreeConnect();//释放资源

//---------------这部分放源文件------------------------

//测试代码
void textMysql() {
    ConnectMysql();
	UpdateData();
    QueryDatabase("select * from student");
	UpdateData();
    QueryDatabase("select * from student");
    FreeConnect();
}

//连接数据库
bool ConnectMysql() {
    mysql_init(&mysql);//初始化mysql
    if (!(mysql_real_connect(&mysql,
                             "localhost",//主机
                             "root",//用户名
                             "",//密码
                             "myDatabase",//数据库名 必须是已经存在的 我的mysql大小写不敏感
                             3306,//端口号 默认的0或者3306
                             NULL, 0//最后两个参数的常用写法 几乎都是这两个
    ))) {
        cout << "Error connecting to database:" + (string) mysql_error(&mysql) << endl;
        return false;
    } else {
        cout << "Connected..." << endl;
        return true;
    }
}

//所有的数据库操作都是先写个sql语句
//然后用mysql_query(&mysql,query)来完成
//包括创建数据库或表 增删改查
bool updateData(string sql){
    mysql_query(&mysql, "set names utf8");//设置编码格式 否则mysql里中文乱码
    // 执行SQL语句
    // 0 执行成功
    // 1 执行失败
    if (mysql_query(&mysql, sql.c_str())) {//mysql_query第二个参数只接受const cahr* 需要将string类型转化
        cout << "Update failed ( " + (string) mysql_error(&mysql) + " )" << endl;
        return false;
    } else {
        cout << "Update success..." << endl;
        return true;
    }
}

//查询并输出
bool QueryDatabase(string sql) {
    mysql_query(&mysql, "set names gbk");//设置编码格式 否则cmd下中文乱码
    // 执行SQL语句
    // 0 执行成功
    // 1 执行失败
    if (mysql_query(&mysql, sql.c_str())) {//mysql_query第二个参数只接受const cahr* 需要将string类型转化
        cout << "Query failed ( " + (string) mysql_error(&mysql) + " )" << endl;
        return false;
    } else {
        cout << "query success" << endl;
    }

    //获得结果集 MYSQL_RES *res;
    if (!(res = mysql_store_result(&mysql))) {
        cout << "Couldn't get result from " + (string) mysql_error(&mysql) << endl;
        return false;
    }
    outMysql();//打印结果
    return true;
}

//输出结果
void outMysql() {
    //打印数据行数
    cout << "number of dataline returned: " << mysql_affected_rows(&mysql) << endl;

    char *field[32];//字段名

    int num = mysql_num_fields(res);//获取列数
    for (int i = 0; i < num; ++i) {//获取字段名
        field[i] = mysql_fetch_field(res)->name;
    }

    for (int i = 0; i < num; ++i) {
        cout << (string) field[i] << "    ";
    }
    cout << endl;

    while (column = mysql_fetch_row(res)) {//获取一行数据
        for (int i = 0; i < num; ++i) {
            cout << column[i] << "    ";
        }
        cout << endl;
    }
}

//释放资源
void FreeConnect() {
    mysql_free_result(res);
    mysql_close(&mysql);
}

未完待续…

你可能感兴趣的:(tool)