环境配置
sudo apt install libmysqlclient-dev
编译选项
cmake
target_link_libraries(main libmysqlclient.so)
g++选项
g++ test_mysql.cpp -lmysqlclient -o tets
示例
读取数据
#include<iostream>
#include <mysql/mysql.h>
using namespace std;
const char* host = "localhost"; //主机名
const char* user = "root"; //用户名
const char* pwd = "123"; //密码
const char* database_name = "MyDB"; //数据库名称 同时也是table名称
int port = 3306; //端口号
int main(){
MYSQL* sql = nullptr;
sql = mysql_init(sql);
if(!sql){
std::cout << "MySql init error!" << std::endl;
}
sql = mysql_real_connect(sql, host, user, pwd, database_name, port, nullptr, 0);
if (!sql) {
std::cout << "MySql Connect error!" << std::endl;
}
std::string command = "select * from " + std::string(database_name)+";";
int ret = mysql_query(sql, command.c_str()); // 查询结果
std::cout<<command<<std::endl;
if (ret) {
std::cout << "error!" << std::endl;
printf("修改表数据失败!失败原因:%s\n", mysql_error(sql));
} else {
std::cout << "success!" << std::endl;
}
MYSQL_RES* res_ptr = mysql_store_result(sql); // 为查询结果分配内存
MYSQL_ROW sqlrow = mysql_fetch_row(res_ptr); // 抓取一行
if(sqlrow){
// mysql_num_rows()函数获取查询结果集的行数目(即总行数)
// mysql_num_fields()函数获取查询结果集的列数目(即有多少列),该函数同mysql_num_rows一样,也需要接受一个执行mysql_query所返回的资源标识符。
// cout << "message "
for(int i=0; i< mysql_num_fields(res_ptr); i++){
cout << sqlrow[i]<<" ";
}
cout << endl;
}
mysql_free_result(res_ptr);
mysql_close(sql);
}