linux 下c++使用本地mysql记录(使用cmake)

前言

安装各种库之后用c++连接本地的数据库一直报错,被自己蠢哭了,将这个使用的过程记录下来。

安装mysql

环境:ubuntu18

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

mysql-server是本地需要运行的mysql服务器,安装配置步骤参考:

(38条消息) Ubuntu安装MySQL_wavehaha的博客-CSDN博客

mysql-client和libmysqlclient-dev是开发需要的,没有配置选项,直接安装。

mysql的配置检查

首先确保已经安装上mysql服务器,然后启动mysql服务

mysql --version
systemctl start mysql

进入mysql命令行,新建一个数据库,以便后续用c++连接

# 一定要加上-u选项,否则命令行里面命令不会生效
mysql -uroot -p

命令行中新建database:

create database hh
show databases

为了避免登录的时候出现权限等问题,直接设置本地可以不验证登录

在Ubuntu终端命令行:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在打开的配置文件末尾加入

skip-grant-tables

如下:

 在c++中使用mysql

mysql的 c api 参考文档:

MySQL :: MySQL 5.7 C API 开发人员指南 :: 5.4.54 mysql_real_connect()

由于是apt-get安装,所以mysql头文件就在/usr/include/下,本地g++是默认包含该路径的,直接

#include<mysql/mysql.h>

就可以,但是cmake中需要将用于连接mysql的mysqlclient链接到自己的构建目标中去

#CMakeLists中添加链接:
add_executable(Hello main.cpp)
target_link_libraries(Hello mysqlclient)

#-----------------------------------
# 如果不用cmake,而是 g++,则需要用:
g++ -o test test.c `mysql_config --cflags --libs`

然后就可以使用mysql相关的函数操作mysql了。

网上抄的例子:

#include <iostream>
#include<cstring>
#include<mysql/mysql.h>
using namespace std;
int main(){
    MYSQL mysql;
    mysql_init(&mysql);
    if (!mysql_real_connect(&mysql,"localhost","root","111111","hh",0,NULL,0))
    {
        cout<<"Failed to connect to database: Error: "<<mysql_error(&mysql)<<endl;
    }

    if (mysql_real_query(&mysql, "select * from hh;", (unsigned long)strlen("select * from hh;"))){
        cout << "mysql_real_query failure!" << endl;
        return 0;
    }
    // 存储结果集
    MYSQL_RES *res = mysql_store_result(&mysql);
    if (res==NULL){
        cout << "mysql_store_result failure!" << endl;
        return 0;
    }
    // 重复读取行
    MYSQL_ROW row;
    while (row = mysql_fetch_row(res)){
        cout << row[0]<<" "<<row[1]<<" "<<row[2] << endl;
    }
    // 释放结果集
    mysql_free_result(res);
    // 关闭Mysql连接
    mysql_close(&mysql);
    return 0;
}

输出:

mysql命令行中:

 c++程序:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值