远程连接MySQL并操作
配置MySQL开发环境
如果你使用的是基于Debian的系统(如Ubuntu),可以在终端通过如下步骤安装MySQL开发包。
更新软件包列表
运行以下命令以确保你拥有最新的软件包列表。
sudo apt-get update
安装libmysqlclient-dev开发包
执行以下命令以安装MySQL客户端开发包。
sudo apt-get install libmysqlclient-dev
检查安装的文件
确认mysql.h是否已经正确安装。通常,mysql.h会位于/usr/include/mysql/目录下。
ls /usr/include/mysql/mysql.h
编译程序时指定头文件路径
在编译时,确保编译器能找到mysql.h文件。可以通过-I标志指定头文件路径。
g++ my_program.c -o my_program -I /usr/include/mysql -lmysqlclient
使用API连接数据库并执行插入操作
代码
#include <mysql.h>
#include <stdio.h>
#include <string.h>
#define WENDY_DB_SERVER_IP "192.168.32.162" // 数据库服务器的 IP 地址
#define WENDY_DB_SERVER_PORT 3306 // 数据库服务器的端口号
#define WENDY_DB_PASSWORD "******" // 数据库用户的密码(这里是真的密码,我手动打码了)
#define WENDY_DB_USERNAME "wendy" // 数据库用户名
#define WENDY_DB_DEFAULTDB "wendy_db" // 默认数据库名称
#define SQL_INSERT_TBL_USER "INSERT tbl_user(u_name,u_gender) VALUES('robot','man');" // 要执行的 SQL 插入语句
int main(){
MYSQL mysql;
// 初始化 MySQL 连接句柄
if(NULL==mysql_init(&mysql)){
printf("mysql_init : %s\n",mysql_error(&mysql)); // 输出初始化错误信息
return -1; // 退出程序,返回错误代码 -1
}
// 连接到 MySQL 数据库
if(!mysql_real_connect(&mysql, WENDY_DB_SERVER_IP, WENDY_DB_USERNAME, WENDY_DB_PASSWORD, WENDY_DB_DEFAULTDB, WENDY_DB_SERVER_PORT, NULL, 0)){
printf("mysql_real_connect : %s\n",mysql_error(&mysql)); // 输出连接错误信息
return -2; // 退出程序,返回错误代码 -2
}
// 执行 SQL 查询(插入语句)
if(mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))){
printf("mysql_real_query : %s\n",mysql_error(&mysql)); // 输出执行查询错误信息
}
// 关闭 MySQL 连接
mysql_close(&mysql);
return 0;
}
运行结果
终端
MySQL数据库
以下两图为运行mysql.cpp前后的数据库数据,可以看到tbl_user成功插入了一条数据。
使用API连接数据库并执行查询操作
代码
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
#define WENDY_DB_SERVER_IP "192.168.32.162" // 数据库服务器的 IP 地址
#define WENDY_DB_SERVER_PORT 3306 // 数据库服务器的端口号
#define WENDY_DB_PASSWORD "******" // 数据库用户的密码
#define WENDY_DB_USERNAME "wendy" // 数据库用户名
#define WENDY_DB_DEFAULTDB "wendy_db" // 默认数据库名称
#define SQL_SELECT_TBL_USER "SELECT * FROM tbl_user;" // 要执行的 SQL 查询语句
int wendy_mysql_select(MYSQL *mysql){
// 执行 SQL 查询语句
if(mysql_real_query(mysql, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))){
printf("mysql_real_query : %s\n",mysql_error(mysql)); // 输出执行查询错误信息
return -3;
}
// 获取查询结果
MYSQL_RES *res = mysql_store_result(mysql);
if(res == NULL){
printf("mysql_store_result : %s\n", mysql_error(mysql));
return -4;
}
// 获取结果集中的行数
int rows = mysql_num_rows(res);
printf("rows: %d\n", rows);
// 获取结果集中的列数
int fields = mysql_num_fields(res);
printf("fields: %d\n", fields);
// 遍历结果集的每一行
MYSQL_ROW row;
while((row = mysql_fetch_row(res))){
int i = 0;
for(i = 0; i < fields; i++){
printf("%s\t", row[i]); // 打印每个字段的值
}
printf("\n");
}
// 释放结果集内存
mysql_free_result(res);
return 0;
}
int main(){
MYSQL mysql;
// 初始化 MySQL 连接句柄
if(mysql_init(&mysql) == NULL){
printf("mysql_init 错误 : %s\n", mysql_error(&mysql)); // 输出初始化错误信息
return -1;
}
// 连接到 MySQL 数据库
if(mysql_real_connect(&mysql, WENDY_DB_SERVER_IP, WENDY_DB_USERNAME, WENDY_DB_PASSWORD, WENDY_DB_DEFAULTDB, WENDY_DB_SERVER_PORT, NULL, 0) == NULL){
printf("mysql_real_connect 错误 : %s\n", mysql_error(&mysql)); // 输出连接错误信息
return -2;
}
// 执行查询操作
wendy_mysql_select(&mysql);
// 关闭 MySQL 连接
mysql_close(&mysql);
return 0;
}
运行结果
推荐一下
0voice · GitHub