(目录)
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(
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(
}
// sql_add 增加数据
void sql_add()
{
MYSQL mysql;
mysql_init(
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(
}
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(
}
// sql_modify 修改数据
void sql_modify()
{
MYSQL mysql;
mysql_init(
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(
}
string str = update students set age = 35 where name = \'王武\';
mysql_real_query(&mysql, str.c_str(), str.size());
mysql_close(
}
/// sql_delete 删除数据
void sql_delete()
{
MYSQL mysql;
mysql_init(
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(
}
string str = delete from students where name = \'苏查擦耳灿\';
mysql_real_query(&mysql, str.c_str(), str.size());
mysql_close(
}
// sql_query 查询数据
void sql_query()
{
MYSQL mysql;
mysql_init(
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(
}
string str = select * from students;;
mysql_real_query(&mysql, str.c_str(), str.size());
MYSQL_RES *result = mysql_store_result(
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(
}
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)