c++ mysql ubuntu

环境配置

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);
}

posted @ 2023-05-04 21:32  小小灰迪  阅读(53)  评论(0编辑  收藏  举报