C语言 & 图形化界面方式连接MySQL【C/C++】【图形化界面组件分享】
文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客
关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!
目录
一.配置开发环境
二,接口介绍
1. mysql_init
2.mysql_real_connect
3. mysql_query
4.对select结果分析
1),mysql_store_result
2)像mysql一样查看mysql数据
提取数据
提取属性名
三,图形化界面方式连接MYSQL
嗨!收到一张超美的图,愿你每天都能顺心!
一.配置开发环境
我们是要使用C/C++语言在代码层面对MySQL进行连接操作,我们就需要其头文件 + 源码库,按照我们之前学的关于如何使用第三方库,可以参考本博客:
(使用第三库操作详解【Linux】【软硬链接 | 动,静态库 | 使用第三库】_linux下stderr的头文件-CSDN博客
但以目前我们学到这里,这种步骤成功性还是无法保证(因为我们可以通过安装mysql,会自动代入我们需要的环境)。
因此首先我们是安装mysql软件,可以参考本篇博客:
centos7.6安装mysql-CSDN博客
下载完成后,我们通过下面指令来查看是否有devel(开发库)
rpm -qa | grep mysql
如果devel有,那么我们就可以直接正常编程了,编译的时候指定一下源码库即可,如:
-L/lib64/mysql -lmysqlclient;
如果没有devel,那么我们需要安装一个开发库,通过下面代码:
yum install -y mysql-community-devel
如果无法安装devel(开发库),还可以到官网下载开发包,再上传到Linux,但是不推荐怎么做,因为可能会因为开发包和自己MySQL的版本不同而出现各种奇奇怪怪的问题:如ssl证书问题,套接字问题……
下面我们可以手动查一下是否有,头文件 + 源码库
二,接口介绍
这里就只提一些C语言常用接口,有需要的可以直接找文档,MySQL :: MySQL 5.7 C API Developer Guide :: 4 C API Function Reference
1. mysql_init
信息:mysql_init函数是用于初始化一个MYSQL结构体的,这个结构体用来存储连接MySQL服务器所需的信息以及连接后的状态信息。
MYSQL *mysql_init(MYSQL *mysql); // 如果第一次初始,设置为nullptr即可
返回值:成功时,返回指向初始化后的MYSQL结构体的指针。如果分配新对象时失败,则返回NULL
2.mysql_real_connect
与mysql服务端建立连接(首先我们要有mysqld的账号)。 如果通过我们写的程序来连接服务端,那我们就成了客户端了,我觉得没这个必要,我们想通过程序来进行,简化对mysql命令的操作,实现自动化提高效率。
MYSQL* mysql_real_connect(MYSQL *mysql, //初始化好的mysql*结构体 const char *host, // 登录主机 const char *user, // 用户 const char *passwd, // 密码 const char *db, // 默认进入的库名, 可以为nullptr unsigned int port, // 服务器端口号 const char *unix_socket, // 套接字种类,一般是域间套接字,可以默认为nullptr unsigned long client_flag) // 默认为0
返回值:成功时,返回mysql,填入的初始化结构体指针;失败,返回nullptr;
关于C连接mysql编码集的问题:
我们知道已经设置了服务器的默认编码集:utf8,但C连接mysql的编码集默认是latin1,不支持中文,因此我们需要修改默认编码集。
int mysql_set_character_set(MYSQL *mysql, const char *csname) // csname 可为 "utf8"
3. mysql_query
在我们在mysql中创建表后,我们就可以通过mysql_query来向mysql发送mysql指令
int mysql_query(MYSQL *mysql, const char *stmt_str) --mysql语句
返回值:成功,返回0;失败,返回其他值
最简单的就是增删改,案例如下:
mysql_set_character_set(my_sql, "utf8"); std::string query = "insert people values('张三', '12345', 1), ('李四', '520', 2)"; // query = "delete from people where name = '张三'; // query = 'update people set phone='1314' where id=2' if (mysql_query(my_sql, query.c_str())) { std::cout