0
点赞
收藏
分享

微信扫一扫

Ubuntu下使用C++编程连接MySQL

江南北 2023-05-17 阅读 74

(目录)

Ubuntu:22.04 LTS MySQL:8.0

一、安装MySQL

$sudo apt update 
$sudo apt install -y  mysql-server
$sudo systemctl status mysql.service

$sudo mysql -uroot
>alter user 'root'@'localhost' identified with mysql_native_password by '123456';
>update user set host='%' where user= 'root';
>grant all on *.* to 'root'@'%';
>flush privileges;

二、安装C++的支持库

sudo apt update
sudo apt-get install libmysqlclient-dev
dpkg -L libmysqlclient-dev

三、连接MySQL的代码示例

测试代码main.cpp

#include <iostream>
#include <mysql/mysql.h>

using namespace std;

// sql_create 创建数据库
void sql_create() 
{   
    MYSQL mysql;
    mysql_init(&mysql);
    if (!mysql_real_connect(&mysql, "localhost", "root", "123456", 0, 3306,
      NULL, 0)) 
    {
        cout << "mysql connect error: " << mysql_error(&mysql) << " "
           << mysql_errno(&mysql) << endl;
    }

    string str = "create database school;";
    mysql_real_query(&mysql, str.c_str(), str.size());

    str = "alter database school charset=utf8mb4;";
    mysql_real_query(&mysql, str.c_str(), str.size());
  
    str = "create table school.students(id int(10) primary key auto_increment, name varchar(20) not null, age int(3) not null);";
    mysql_real_query(&mysql, str.c_str(), str.size());

    mysql_close(&mysql);
}

// sql_add 增加数据
void sql_add() 
{
    MYSQL mysql;
    mysql_init(&mysql);
    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8mb4");
    mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8mb4");

    if (!mysql_real_connect(&mysql, "localhost", "root", "123456", "school", 3306,
                          NULL, 0)) 
    {
        cout << "mysql connect error: " << mysql_error(&mysql) << " "
             << mysql_errno(&mysql);
    }

    string str = "insert into students(id, name, age) values(null, \'黄飞鸿\', 30)";
    mysql_real_query(&mysql, str.c_str(), str.size());
    str = "insert into students(id, name, age) values(null, \'十三姨\', 28)";
    mysql_real_query(&mysql, str.c_str(), str.size());
    str = "insert into students(id, name, age) values(null, \'王武\', 33)";
    mysql_real_query(&mysql, str.c_str(), str.size());
    str = "insert into students(id, name, age) values(null, \'苏查擦耳灿\', 29)";
    mysql_real_query(&mysql, str.c_str(), str.size());
    str = "insert into students(id, name, age) values(null, \'赵君竹\', 30)";
    mysql_real_query(&mysql, str.c_str(), str.size());

    mysql_close(&mysql);
}

// sql_modify 修改数据
void sql_modify() 
{
    MYSQL mysql;
    mysql_init(&mysql);
    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8mb4");
    mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8mb4");

    if (!mysql_real_connect(&mysql, "localhost", "root", "123456", "school", 3306,
                            NULL, 0)) {
        cout << "mysql connect error: " << mysql_error(&mysql) << " "
          << mysql_errno(&mysql);
    }

    string str = "update students set age = 35 where name = \'王武\'";
    mysql_real_query(&mysql, str.c_str(), str.size());

    mysql_close(&mysql);
}

/// sql_delete 删除数据
void sql_delete() 
{
    MYSQL mysql;
    mysql_init(&mysql);
    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8mb4");
    mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8mb4");

    if (!mysql_real_connect(&mysql, "localhost", "root", "123456", "school", 3306,
                            NULL, 0)) {
        cout << "mysql connect error: " << mysql_error(&mysql) << " "
          << mysql_errno(&mysql);
    }

    string str = "delete from students where name = \'苏查擦耳灿\'";
    mysql_real_query(&mysql, str.c_str(), str.size());

    mysql_close(&mysql);
}

// sql_query 查询数据
void sql_query() 
{
    MYSQL mysql;
    mysql_init(&mysql);
    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8mb4");
    mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8mb4");

    if (!mysql_real_connect(&mysql, "localhost", "root", "123456", "school", 3306,
                            NULL, 0)) {
        cout << "mysql connect error: " << mysql_error(&mysql) << " "
          << mysql_errno(&mysql);
    }

    string str = "select * from students;";
    mysql_real_query(&mysql, str.c_str(), str.size());
    MYSQL_RES *result = mysql_store_result(&mysql);

    MYSQL_ROW row;
    while (row = mysql_fetch_row(result)) 
    {
        cout << "id: " << row[0] << " name: " << row[1] << " age: " << row[2]
          << endl;
    }

    mysql_free_result(result);
    mysql_close(&mysql);
}

int main() 
{
    cout << "创建数据库..." << endl;
    sql_create();
    cout << "添加数据..." << endl;
    sql_add();
    cout << "查询数据..." << endl;
    sql_query();
    cout << "修改数据..." << endl;
    sql_modify();
    cout << "查询数据..." << endl;
    sql_query();
    cout << "删除数据..." << endl;
    sql_delete();
    cout << "查询数据..." << endl;
    sql_query();

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.22)
project(testbed)

file(GLOB SRCS "./*.cpp")
file(GLOB HDRS "./*.h")
add_definitions("-Wall -g")

add_executable(testbed ${SRCS} ${HDRS})
target_link_libraries(testbed -lmysqlclient)
举报

相关推荐

0 条评论