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

linux cpp操作mysql

编译额外参数:-l mysqlclient

g++ -Wall test.cpp -o test -l mysqlclient

demo

#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main() 
{
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char server[] = "localhost";
    char user[] = "root";
    char password[] = "mima";
    char database[] = "mysql";
    
    conn = mysql_init(NULL);
    
    if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0)) 
    {
        fprintf(stderr, "%s\n", mysql_error(conn));
        exit(1);
    }
    
    if (mysql_query(conn, "show tables")) 
    {
        fprintf(stderr, "%s\n", mysql_error(conn));
        exit(1);
    }
    
    res = mysql_use_result(conn);
    
    printf("MySQL Tables in mysql database:\n");
    
    while ((row = mysql_fetch_row(res)) != NULL)
    {
        printf("%s \n", row[0]);
    }
    
    mysql_free_result(res);
    mysql_close(conn);
    
    printf("finish! \n");
    return 0;
}

代码解读:
mysql_real_connect

MYSQL *mysql_real_connect (MYSQL *mysql,
const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
unsigned long client_flag)

MYSQL *为mysql_init函数返回的指针,host为null或 localhost时链接的是本地的计算机,当mysql默认安装在unix(或类unix)系统中,root账户是没有密码的,因此用户名使用root,密码为null,当db为空的时候,函数链接到默认数据库,在进行 mysql安装时会存在默认的test数据库,因此此处可以使用test数据库名称,port端口为0,使用 unix连接方式,unix_socket为null时,表明不使用socket或管道机制,最后一个参数经常设置为0,mysql_real_connect()尝试与运行在主机上的MySQL数据库引擎建立连接。在你能够执行需要有效MySQL连接句柄结构的任何其他API函数之前,mysql_real_connect()必须成功完成。
因此mysql_real_connect()函数调用为: mysql_real_connect(mysql,"localhost","root",NULL,"test",0,NULL,0);

相关文章:

  • mysql workbench无法登录的bug
  • MYSQL:Access denied for user...
  • Ubuntu Add the installation prefix of “Qt5“ to CMAKE_PREFIX_PATH or set “Qt5_DIR“
  • Error while building/deploying project xxx When executing step “qmake“
  • 趣味说创投
  • 元宇宙开发简记 # 1 昨日之日、今天世界的认知、定义规则与重构世界
  • QGC二次开发
  • QT 音视频开发 基于gstreamer框架
  • Q_UNUSED 的使用
  • QGC源码分析 # VideoReceiverApp
  • qmlRegisterType
  • 在 QQuickWidget 中使用 qmlglsink 播放视频
  • QGC二次开发 # 视频流代码分析
  • RTSP协议测试代码
  • Ubuntu禁用自动连接远程打印机
  • 分享的文章《人生如棋》
  • conda常用的命令
  • Flannel解读
  • iOS 系统授权开发
  • IOS评论框不贴底(ios12新bug)
  • Laravel5.4 Queues队列学习
  • php ci框架整合银盛支付
  • PHP 的 SAPI 是个什么东西
  • Sass 快速入门教程
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue.js框架原理浅析
  • 给第三方使用接口的 URL 签名实现
  • 构建工具 - 收藏集 - 掘金
  • 你不可错过的前端面试题(一)
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端性能优化——回流与重绘
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何用vue打造一个移动端音乐播放器
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 如何在招聘中考核.NET架构师
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (分布式缓存)Redis哨兵
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (五)MySQL的备份及恢复
  • (一)u-boot-nand.bin的下载
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)scrum常见工具列表
  • (转)Sql Server 保留几位小数的两种做法
  • .“空心村”成因分析及解决对策122344
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 8.0 发布到 IIS