返回顶部
首页 > 资讯 > 数据库 >centos7.9安装libmysqlclient,用C语言连接mysql
  • 308
分享到

centos7.9安装libmysqlclient,用C语言连接mysql

mysqlc语言数据库 2023-09-02 19:09:33 308人浏览 安东尼
摘要

前言 我的Mysql版本是8.0.31。在linux中使用第三方库时首先需要安装库,然后在编译时指定链接库名,要注意的是这个库是放在/usr/lib64/mysql下的,所以需要在编译时指定动态库的路

前言

我的Mysql版本是8.0.31。在linux中使用第三方库时首先需要安装库,然后在编译时指定链接库名,要注意的是这个库是放在/usr/lib64/mysql下的,所以需要在编译时指定动态库的路径,或者把/usr/lib64/mysql目录下的文件都拷贝到/usr/lib64中。我们先从mysql官网下载动态库进行安装,再用C语言连接mysql进行CRUD操作。


一、安装libmysqlclient

mysql官网:https://dev.mysql.com/
1、点击MySQL Downloads

点击C api
在这里插入图片描述
3、点击linux那一行对应的MySQL CommUnity Server
在这里插入图片描述
4、选择版本,Centos第一栏选择Red Hat Enterprise,centos7第二栏就选 Linux7,如果是centos6 应该就算选Linux6;然后往下面翻,找到RPM Package, Development Libraries,点击下载,然后用xftp把下载好的文件上传到centos7中。或者是复制下载链接,在centos中用wget 链接 ,进行下载。
在这里插入图片描述
在这里插入图片描述
5、安装libmysqlclient: sudo rpm -ivh 包名。安装完成后在/usr/include/mysql中会有相关的头文件,/usr/lib64/mysql中有相关的库。到此就安装成功了。要注意的是这里的第三方库不是直接放在/usr/lib64目录下,所以如果不指定链接路径会提示找不到库,用-L路径名指定。

在这里插入图片描述6、验证是否安装成功需要包含头文件 #include
首先通过 mysql_get_client_info() 函数,来验证我们的引入是否成功,如果正确编译并输出mysql版本就表示成功引入。
代码如下(示例):

#includeint main(){printf("mysql client Version: %s\n", mysql_get_client_info());return 0;}

由于使用的是第三方库,在编译时一定要指定链接的库名,用-lmysqlclient指定。
GCc test.c -o test -L/usr/lib64/mysql -lmysqlclient

连接mysql进行操作

mysql官方文档:Https://www.mysqlzh.com/api/17.html

必须先进行初始化,然后再进行连接

MYSQL * fm = mysql_init(NULL);

连接函数:

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, //MYSQL 就是刚刚初始话的那个,host是mysql的IP,本机连接是127.0.0.1const char *user, //用户名const char *passwd, //密码const char *db,//连接的数据库unsigned int port,//mysqld端口号,一般是3306const char *unix_Socket,  //nullunsigned long clientflag);//默认填0函数不成功则返回NULL

mysql连接成功后默认是编码是Latin,因此要设置编码格式为UTF8,否则插入的数据会乱码。

mysql_set_character_set(fmp, "utf8");

增删查改都是使用mysql_query进行的,函数成功返回0。第一个参数就是初始化函数的返回值,第二个参数是要执行的sql语句。
增删改比较方便,判断返回值是不是0就知道是否成功。而查还需要在成功之后拿到查询的数据。

int mysql_query(MYSQL *mysql, const char *q);

获得查询结果:

mysql_store_result()函数malloc一个空间来存储查询的结果,并返回该空间的地址。由于是malloc出来的,所以用完后一定要配合mysql_free_result()释放空间,否则会造成内存泄漏。

MYSQL_RES * mysql_store_result(MYSQL *mysql);mysql_free_result(MYSQL_RES *res);

有下列与查询结果有关的函数

//获取行数my_ulonglong mysql_num_rows(MYSQL_RES  *res);//获取列数unsigned int mysql_num_fields(MYSQL_RES  *res)//获取每列名称MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *res)//获取每行的结果MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

我们可以根据根据列数先打印列名;再根据行数遍历每一行查询,根据列数遍历每列结果

int rows = mysql_num_rows(fm);int columns = mysql_num_fields(fm);MYSQL_FIELD *fields = mysql_fetch_fields(res);for(int i =0; i < colums; ++i){printf("%s\t",fields[j].name);}printf("\n");MYSQL_ROW line;//遍历结果for(int i = 0; i < rows; ++i){line = mysql_fetch_row(res);for(int j = 0; j < columns; ++j){printf("%s\t",line[j]);}printf("\n");} 

最后放一个我自己用c++和c写的实例

#include #include #include#include using std::cout;using std::endl;using std::string;const string host = "127.0.0.1";const string user = "xxxxx";const string passWord = "xxxxxxx";const string db = "personal";unsigned int port = 3306;int main(){   MYSQL *fmp = mysql_init(nullptr);   if (mysql_real_connect(fmp, host.c_str(), user.c_str(),                          password.c_str(), db.c_str(), port, nullptr, 0) == nullptr)   {      cout << "connect failed\n";      return 1;   }   cout << "connect successful\n";   mysql_set_character_set(fmp, "utf8");   //创建表   // string s = "create table emp if not exists(id int primary key, job varchar(16),salary decimal(6,2))";   // if(mysql_query(fmp,s.c_str()) != 0 )   // {   //    cout<<"query:"<   //    return 2;   // }//增   // string s = "insert into emp (id,job,salary) values (1,\'bob\',6000.00)";   // if (mysql_query(fmp, s.c_str()) != 0)   // {   //    cout << "query:" << s << "failed\n";   //    return 2;   // }   //改   // string s = "update emp set job=\'engineer\' where id = 1";   // if (mysql_query(fmp, s.c_str()) != 0)   // {   //    cout << "query:" << s << "failed\n";   //    return 3;   // }   string s = "select * from emp";   if (mysql_query(fmp, s.c_str()) != 0)   {      cout << "query:" << s << "failed\n";      return 3;   }      MYSQL_RES * res = mysql_store_result(fmp);   int columns = mysql_num_fields(res);   int rows = mysql_num_rows(res);   cout<<"行: "<<rows<<"列:"<<columns<<endl;   MYSQL_FIELD *fields = mysql_fetch_fields(res);   for(int i = 0; i < columns; ++i)   {      cout<<fields[i].name<<"\t";   }   cout<<endl;   MYSQL_ROW content;   for(int i = 0; i < rows; ++i)   {      content = mysql_fetch_row(res);      for(int j = 0; j < columns; ++j)      {         cout<<content[j]<<"\t";      }      cout<<endl;   }      mysql_free_result(res);   mysql_close(fmp);   return 0;}

来源地址:https://blog.csdn.net/weixin_45029051/article/details/127983601

您可能感兴趣的文档:

--结束END--

本文标题: centos7.9安装libmysqlclient,用C语言连接mysql

本文链接: https://lsjlt.com/news/391305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • centos7.9安装libmysqlclient,用C语言连接mysql
    前言 我的mysql版本是8.0.31。在linux中使用第三方库时首先需要安装库,然后在编译时指定链接库名,要注意的是这个库是放在/usr/lib64/mysql下的,所以需要在编译时指定动态库的路...
    99+
    2023-09-02
    mysql c语言 数据库
  • MySQL使用C语言连接
    文章目录 一、准备工作二、MySQL 的 C 语言接口1. mysql_init2. mysql_real_connect3. mysql_close4. mysql_set_characte...
    99+
    2023-09-09
    mysql c语言 数据库
  • c语言怎么连接到mysql
    在 c 语言中,使用 mysql c 客户端库连接到 mysql,步骤如下:包含头文件。初始化连接。设置连接参数。执行查询。检索查询结果。逐行处理结果。关闭连接。 如何在 C 语言中连...
    99+
    2024-05-21
    mysql c语言
  • Docker 安装 MySQL 并使用 Navicat 连接
    本文目录 1. 拉取 MySQL 镜像2. 创建并运行一个 MySQL 容器3. 验证MySQL容器是否创建并运行成功3.1 进入 MySQL 容器3.2 进入 MySQL3.3 查看 hos...
    99+
    2023-08-31
    docker mysql adb
  • MySQL系列教程之使用C语言来连接数据库
    目录写在前面一、准备工作1.1 把 libmysql.dll 和 libmysql.lib 文件复制到工程目录下1.2 添加 libmysql.lib 1.3 添加 inc...
    99+
    2024-04-02
  • redis安装,语法和Python连接
    程序下载http://down.51cto.com/data/2440789:点击客户端进行连接测试,出现下图说明测试成功语法:redis的字符串操作 set(key,value,ex=None,px=...
    99+
    2024-04-02
  • C语言中VS2022怎么安装使用
    这篇文章主要介绍“C语言中VS2022怎么安装使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言中VS2022怎么安装使用”文章能帮助大家解决问题。一、安装VS2022Tips:选择安装信息的...
    99+
    2023-06-30
  • VS 连接MySQL | mysql-for-visualstudio 的安装
    这部分是之前 这篇文章 的补充。 关于在 Visual Studio 服务资源管理器如何添加MySQL进行简单的记录。需要安装的工具是 mysql-for-visualstudio。 为什么要用 my...
    99+
    2023-09-21
    mysql 数据库
  • c语言如何把字符串连接
    在C语言中,可以使用strcat函数将两个字符串连接起来。strcat函数的原型如下:```cchar* strcat(char* ...
    99+
    2023-08-15
    c语言
  • linux 学习 mysql安装到连接
    目录 下载与安装   1.方法一(本地翻墙)   2.方法二(本地不翻墙) 初始化和配置   1.初始化mysql    2.远程访问的设置   3.用户组权限的修改  ps:一般mysql安装后会在/var/log...
    99+
    2017-06-16
    linux 学习 mysql安装到连接
  • MySQL - 安装、连接、简单介绍
    1、安装 MySQL8.0 安装MySQL 8.0的步骤,以 Windows 为例: 1.1 下载MySQL Installer: 需要从MySQL官方网站下载MySQL Installer。在下载页面中,选择适用于Windows的MySQ...
    99+
    2023-08-16
    mysql 数据库
  • Ubuntu如何安装Mysql启用远程连接
    这篇文章主要介绍“Ubuntu如何安装Mysql启用远程连接”,在日常操作中,相信很多人在Ubuntu如何安装Mysql启用远程连接问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ubuntu如何安装Mysql...
    99+
    2023-07-02
  • Ubuntu怎么安装Mysql启用远程连接
    这篇文章主要介绍了Ubuntu怎么安装Mysql启用远程连接的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ubuntu怎么安装Mysql启用远程连接文章都会有所收获,下面我们一起来看看吧。1、用apt-get安...
    99+
    2023-07-06
  • C语言怎么连接两个字符串
    在C语言中,连接两个字符串可以使用`strcat()`函数或者手动实现。1. 使用`strcat()`函数:`strcat()`函数...
    99+
    2023-08-30
    C语言
  • MySQL安装与idea的连接实现
    目录MySQL安装与idea的连接Mysql与idea进行连接1.导入数据库驱动2.连接数据库(最基本的连接方法)封装工具类连接数据库sql注入的问题及解决MySQL安装与idea的...
    99+
    2024-04-02
  • 易语言怎么连接云服务器mysql
    使用易语言连接mysql数据库的方法具体方法如下:.子程序 _按钮1_被单击.局部变量 b, 整数型.局部变量 取查询值, 整数型.局部变量 MySQL语句, 文本型.局部变量 记录数量, 整数型.局部变量 i, 整数型.局部变量 姓名, ...
    99+
    2024-04-02
  • mysql 8.0.15 版本安装教程 连接Navicat.list
    踩过的坑 1.网上很多教程写的配置环境变量的文件名为my.ini,然后死活启动不了,即使启动了登陆密码后也是各种错误,最后改为my-default.ini ,启动成功,登陆无障碍 2.使用mysql之前需要...
    99+
    2024-04-02
  • C++连接使用MySQL的方法
    C++连接使用MySQL,供大家参考,具体内容如下 定义MySQLCon类 class MySQLCon { MYSQL mysql; public: int errornum; string errort...
    99+
    2022-05-16
    C++ mysql
  • C语言如何连接两个数组的内容
    这篇文章主要介绍了C语言如何连接两个数组的内容,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。要求:定义两个数组,并用指针将两个数组的内容连接到一起源代码如下:#include...
    99+
    2023-06-26
  • C语言的Visual Studio插件怎么安装
    要安装C语言的Visual Studio插件,您可以按照以下步骤进行操作: 打开Visual Studio。 点击顶部菜单栏...
    99+
    2023-10-24
    C语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作