首页 > 数据库 >Linux C 操作MySQL

Linux C 操作MySQL

时间:2023-02-17 18:03:26浏览次数:58  
标签:printf pMySql Linux usr mysql MySQL 操作 include

概述

  1. MySQL安装时,请确保安装了MySQL-server、MySQL-client、MySQL-devel。

安装过程请参考:​​https://blog.51cto.com/weiyuqingcheng/5753459​

  1. 整理MySQL include目录
# 创建MySQL include目录
mkdir /usr/include/mysql

# 将MySQL include复制到放入创建的文件夹中
cp -r /usr/src/debug/mysql-8.0.30/mysql-8.0.30/include/ /usr/include/mysql
  1. 创建MySQL C库软连接
cd /usr/lib64/mysql

ln -s /usr/lib64/mysql/libmysqlclient.so.18.1.0 /usr/lib64/mysql/libmysqlclient.so

4.创建C项目(我是用的QtCreator创建的)

# 引入MySQL include目录
INCLUDEPATH += /usr/include/mysql

# 链接MySQL动态链接库
LIBS += -L/usr/lib64/mysql -lmysqlclient
  1. 编写代码
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>

int main()
{
MYSQL *pMySql = mysql_init( NULL );
mysql_real_connect( pMySql, "192.168.232.162", "test", "xxxx", "test", 3306, NULL, 0 );
if( !pMySql )
{
printf( "Connect mysql error: %s\n", mysql_error( pMySql ) );
return -1;
}

//query
char strSql[] = "select * from TABLE_DESC;";
int nRet = mysql_real_query( pMySql, strSql, sizeof( strSql ) );
if( nRet != 0 )
{
printf( "Query failed: %s\n", mysql_error( pMySql ) );
return -1;
}

//print result
MYSQL_RES* pResult = mysql_store_result( pMySql );
int nRowNum = mysql_num_rows( pResult );
int nColumnNum = mysql_num_fields( pResult );
printf( "Row num: %d, Column num: %d\n", nRowNum, nColumnNum );

MYSQL_ROW rowData;
while( ( rowData = mysql_fetch_row( pResult ) ))
{
for( int n = 0; n < nColumnNum; n++ )
{
printf( "%s\t", rowData[ n ] );
}
printf( "\n" );
}

mysql_free_result( pResult );
mysql_close( pMySql );

return 0;
}

遇到的问题

  • 问题:测试代码时,运行到 mysql_real_query() 函数时,报错:mysql server has gone away。
  • 原因:未安装 mysql-community-devel-8.0.30-1.el7.x86_64.rpm

标签:printf,pMySql,Linux,usr,mysql,MySQL,操作,include
From: https://blog.51cto.com/weiyuqingcheng/6064456

相关文章

  • Linux 进程符号的含义
    Linux进程符号的含义Linux查看进程,常使用ps那么进程符号你了解多少呢?如下图所示:   常见的进程间符号如下   Linux进程间的含义符号含义D(TASK_UN......
  • 外部连接不上 docker内的Mysql,telnet不通3306
    本机vm打开虚拟机后,自动启动mysql,查看容器运行一切正常:dockerps-a 所有映射的端口,在外部都telnet不通,比如3306、6379等都不行。想着在别人都ok的,在我这里不行,问题......
  • Unity TextMesh 操作-----点击显示/影藏+长按方大+旋转
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassSetActiveLogic:MonoBehaviour{//获取操作对象publicGa......
  • mysql主从同步异常修复
    说明mysql集群部署在k8s上,架构是“一主两从”,机房突然断电,导致mysql集群启动之后,发生主从同步异常。主库上查看binlog信息:mysql>showmasterstatus\G;*********......
  • linux基本功系列之grep命令实战
    前言大家好,又见面了,我是沐风晓月,本文是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象,以及帮助到其他的小伙伴......
  • windwos下 UE5连接mysql
    windwos下UE5连接mysql1.确定mysql版本与对应的mysql-connector版本我使用的:mysql-8.0.31-winx64:https://downloads.mysql.com/archives/installer/mysql-connec......
  • linux 挂载U盘
    查看磁盘,找到自己的U盘[root@localhost~]#fdisk-l磁盘/dev/sdb:31.0GB,31037849600字节,60620800个扇区Units=扇区of1*512=512bytes扇区大小(逻辑/物......
  • 3.mysql事务
    mysql事务事务:什么是事务事务是访问和更新数据库的程序执行单元,一个事务中可能包含一个或多个sql语句,且这些语句要么都执行,要么都不执行mysql逻辑架构如上图,mys......
  • 第一周复习笔记(MySQL、Redis、JVM、JUC)
    MySQL1.引擎1.1Innodb和MyIsAM的区别1.2Innodb的逻辑存储结构2.索引2.1索引的分类2.2索引优化2.3索引失效的场景3.事务3.1事务的隔离级别3.2ACID原则......
  • 为什么mysql 要用B+树而不用二叉树
          1.B+树的层级更少B+树的高度一般为2-4层,所以查找记录时最多只需要2-4次IO,相对二叉平衡树已经大大降低了。范围查找时,能通过叶子节点的指针获......