当前位置: 首页 > news >正文

linux下c++连接mysql

1、下载mysql客户端使用的库文件

sudo apt install libmysqlclient-dev

头文件一般在 /usr/include/mysql/
库文件一般在 /usr/lib/x86_64-linux-gnu/

2、mysql c api开发者指南

>>>>官方连接

3、API使用实例
#include<mysql/mysql.h>
#include<errno.h>
#include<string.h>
#include<stdio.h>
int main(int argc, char *argv[])
{
    mysql_library_init(0,NULL,NULL);
    MYSQL mysql;
    mysql_init(&mysql);
 
    MYSQL * p_mysql =  mysql_real_connect(&mysql, 0/*ip/host*/
    , 0/*用户名*/, 0/*密码*/, 0/*数据库*/,0/*端口号*/, NULL, 0);
    if (nullptr == p_mysql)
    {
        printf("%d:%s\n",__LINE__,strerror(errno));
        return -1;
    }

    //插入数据
    if (0 > mysql_query(&mysql,"insert into single_table(key1,key2) values('123',444),('456',777)"))
    {
        printf("%d:%s\n",__LINE__,strerror(errno));
        return -1;
    }
    int affected = (int)mysql_affected_rows(&mysql);
    if (affected > 0)
        printf("修改了 %d 行数据\n",affected);
    else
    {
        printf("%d: %s",__LINE__,strerror(errno));
        return -1;
    }


    //查询数据
    if (0 > mysql_query(&mysql,"select * from single_table"))
    {
        printf("%d:%s\n",__LINE__,strerror(errno));
        return -1;
    }
    
    MYSQL_RES *res= mysql_store_result(&mysql);
    if (nullptr == res)
    {
       printf("%d:%s\n",__LINE__,strerror(errno));
       return -1;
    }
    MYSQL_ROW       row         = mysql_fetch_row(res);
    int             num_fields  = mysql_num_fields(res);
 
    printf("字段数:%d\n",num_fields);
    while (row != NULL)
    {
        //unsigned long * lengths     = mysql_fetch_lengths(res);
        //lengths是当前行各个字段的长度,如果lengths[i]==0,则row[i]==NULL
        for (int i = 0; i < num_fields; i++)
            printf("%s\t", row[i]);
        printf("\n");
        
        row = mysql_fetch_row(res);
    }
        
    mysql_free_result(res);
    mysql_close(&mysql);
    mysql_library_end();
    return 0;
}
4、编译

因为编译时需要使用mysql提供的共享库 libmysqlclient.so。默认情况下程序是找不到这个库的,以下提供两种方法:

  1. 将libmysqlclient.so拷贝到/usr/lib路径下
  2. 使用mysql_config --libs 命令生成共享库路径
gcc xxx.cpp `mysql_config --libs` -o xxx

``和$()的作用相同:将命令的输出当作返回值。

相关文章:

  • 数据结构:哈夫曼树
  • 【SpringBoot实现全局API限频】 最佳实践
  • Ceph集群搭建2025(squid版)
  • 【机器学习】线性回归与一元线性回归
  • Oracle日常管理(8)——DB日常管理(1)
  • Python(二十)实现各大跨境船公司物流查询新增[ARKAS Line]船司
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-plotting.py
  • 【ESP32接入国产大模型之Deepseek】
  • 2.5 模块化迁移策略:从传统项目到模块化系统
  • 算法——结合实例了解启发式搜索
  • 网络安全的现状如何?
  • LabVIEW 中dde.llbDDE 通信功能
  • linux中top命令详解
  • linux 释放9090端口
  • 多模态识别和自然语言处理有什么区别
  • 100N10-ASEMI小家电专用MOS管100N10
  • 51单片机俄罗斯方块开机动画
  • TypeScript装饰器 ------- 学习笔记分享
  • 数据结构 双链表的模拟实现
  • 32单片机学习记录4之串口通信
  • 北京建设部网站官网/网站seo属于什么专业
  • 杭州cms建站模板下载/百度快照优化排名推广怎么做
  • b2b商城网站/北京网站优化合作
  • artisteer 做的网站/百度最怕哪个部门去投诉
  • 邮箱注册163免费注册入口/兰州网络seo
  • 重庆疫情最新情况播报/seo包年优化平台