本文最后更新于 266 天前,如有失效请评论区留言。
准备工作
想用C/C++库来访问数据库,在云服务器中还要下第三方库。
方法一:
可以在MySQL官方下载网站中可以找到相关的下载链接,比如我这里下载C/C++的connector,选择对应你服务器的版本下载,并发送到服务器中解压即可。
方法二:
在centos系统中使用yum下载指令可以下载到MySQL的开发包,名字包含dev,devel的就是开发包。
方法三:
我之前使用宝塔Linux面板下载的MySQL,发现已经一键下好了开发包。

然后在终端里
/usr/include/mysql/路径下可以找到mysql.h头文件,以及在/usr/lib64/路径下可以找到几个mysqlclient的动态库。
此时,我们在服务器中的准备工作就做好了!
C/C++接口增删改查
-
首先在C++文件中用下面的代码验证能否连通到本地服务器的mysqld服务端:
std::cout << "mysql client version: " << mysql_get_client_info() << std::endl; // for test -
C/C++接口进行增删改。
官方文档常用函数接口MYSQL *mysql_init(MYSQL *mysql); // 初始化 void mysql_close(MYSQL *mysql); // 关闭 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); // 连接到某个用户的某个数据库 int mysql_query(MYSQL *mysql, const char *stmt_str); // 发送指令- init和close是必须的
- mysql_real_connect中,unix_socket暂填nullptr,client_flag暂填0
- mysql_query可以发送sql语句,用来操作数据库,insert,drop,update都可以!但select暂时没有效果
-
select查询的细节
MYSQL_RES *mysql_store_result(MYSQL *mysql); // 转储数据到结果集中 my_ulonglong mysql_num_rows(MYSQL_RES*); // 获取有多少行 my_ulonglong mysql_num_fields(MYSQL_RES*); // 获取有多少列 MYSQL_ROW mysql_fetch_row(MYSQL_RES *result); // 遍历数据 MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result); // 遍历属性 void mysql_free_result(MYSQL_RES *result); // 释放结果集1)首先
mysql_query(mysql, sql);中的sql语句使用select查询
2)mysql_store_result(mysql);转储MYSQL结构里的数据到MYSQL_RES结构中
图形化界面访问MySQL
Navicat(收费、体验最好)
SQLyog(收费、体验好)
MySQL Workbench(免费、官方、体验一般)
先创建一个允许任何地方登录的用户。
create user 'xxx'@'%' identified by 'yyy';
然后在navicat中点连接,先点ssh连接,不要测试,直接连接。然后右键这个连接,选编辑连接,在常规里改成localhost,再填相关用户名、端口、密码等,就能连上了。