MYSQL-C语言操作

2021/9/10 19:08:38

本文主要是介绍MYSQL-C语言操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

************************************************************************************
【环境准备】
  对于C语言的实操,mysql提供了一个头文件 "mysql.h";
  获得这个头文件,需要安装libmysqlclient-dev:
    [linux-shell]$ sudo apt install libmysqlclient-dev
  安装完成后,可以使用find命令查找到mysql.h的路径,以便于include它:
    [linux-shell]$ sudo find / -name mysql.h
  查询结果: /usr/include/mysql/mysql.h
  在C程序中包含此头文件即可调用mysql系列函数簇。

【实战】
#include "/usr/include/mysql/mysql.h"
#include <stdio.h>
#include <string.h>

int main(){
MYSQL mysql;
const char *host = "192.168.1.201"; // mysql所在服务器IP地址
const char *user = "user157"; // 登录的用户名
const char *passwd = "user123"; // 登录密码
const char *database = "mydbtest"; // 指定操作的数据库
unsigned int port = 0; // 默认填0
const char *unix_socket = NULL; // 默认填NULL
unsigned long clientflag= 0; // 默认填0

// 初始化MYSQL对象
mysql_init(&mysql);

// 连接到远程数据库
if( NULL == (mysql_real_connect(&mysql, host, user, passwd, database, port, unix_socket, clientflag))){
printf("mysql_real_connect failed. errocde:%u :%s\n", mysql_errno(&mysql), mysql_error(&mysql));
return -1;
}
printf("%s mysql connection success.\n", host);

// 准备mysql指令
const char *table_name = "test_tab1";
char mysql_cmd[100] = {0};
sprintf(mysql_cmd, "select * from %s;", table_name);
// 执行mysql查询表内容指令: select * from test_tab1;
mysql_query(&mysql, mysql_cmd);

// 获取数据库存储结果
MYSQL_RES *res = mysql_store_result(&mysql);
// 获取查询的记录条数
unsigned int row_num = mysql_num_rows(res);
printf("row num: %d.\n", row_num);
// 操作完成后,执行下一条指令前要清理结果集
mysql_free_result(res);

// 插入一条数据(最大id+1, aaaaa)
sprintf(mysql_cmd, "insert into %s values (%d, \'aaaaa\');", table_name, row_num + 1);
mysql_query(&mysql, mysql_cmd);
mysql_free_result(res);

/******************** 将表输出打印 ********************/
// 1.获取表头类型个数
int type_num = mysql_num_fields(res);
printf("type num: %d\n", type_num);

// 2.获取列名(id, name, ....)
MYSQL_FIELD *fd;
char asz_flds[25][25] = {0};
int i = 0;
// 当获取到的 fd 为NULL时,退出循环(mysql_fetch_field()函数会自动顺延)
for(i = 0; fd = mysql_fetch_field(res); i++){
printf("fd->name: %s\n", fd->name);
strcpy(asz_flds[i], fd->name);
}

// 3.打印表头
for(i = 0; i < type_num; i++){
printf("%s\t", asz_flds[i]);
}
printf("\n");

// 4.打印每一条记录
MYSQL_ROW row;
while(row = mysql_fetch_row(res)){
for(int j = 0; j < type_num; j++){
printf("%s\t", row[j]);
}
printf("\n");
}
/************************************************************/

// 关闭连接
mysql_close(&mysql);
}

然后编译时需要链接mysql库:
gcc main.c -lmysqlclient

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



这篇关于MYSQL-C语言操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程