首先把驱动下载到电脑上
mysql
连接Clion
下载完成后,解压,然后进入到下面的文件夹中
找到inclue和lib
进入到lib中,找到两个文件
然后复制到clion中
然后在CMakeLists.txt中,写入下面的指令
include_directories(“G:\mysql\MySQL8.0.17\include”) // 刚刚说到的include文件夹的路径
link_directories(“G:\mysql\MySQL8.0.17\lib”) // lib文件夹的路径
link_libraries(libmysql) // 直接写这个
target_link_libraries(supermaket libmysql) // 项目名称 libmysql
然后这样我们的Clion就和mysql连接起来啦,可以操作数据库了。
操作数据库
//--------------这部分放头文件----------------------
#include <mysql.h>
#include <bits/stdc++.h>
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);//初始化mysqlif (!(mysql_real_connect(&mysql,"localhost",//主机"root",//用户名"",//密码"myDatabase",//数据库名 必须是已经存在的 我的mysql大小写不敏感3306,//端口号 默认的0或者3306NULL, 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);
}