Linux下C语言实现MySQL操作——连接、查询、插入与客户端打造
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
准备工作
数据库
创建一个数据库(我的是test),并建表(我的是example)
知识准备
https://blog.csdn.net/weixin_45525272/article/details/108015027
1.连接代码
/*************************************************************************
> File Name: connect.c
> Author: 杨永利
> Mail: 1795018360@qq.com
> Created Time: 2020年08月14日 星期五 20时39分56秒
************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
// 定义连接时所需要的数据宏
#define HOST "127.0.0.1" // 所连数据库的ip 127.0.0.1是本机ip
#define USER "root" // 数据库用户
#define PASSWORD "123456" // 该用户密码(自设)
#define DBNAME "test" // 要操作的数据库名
int main(int argc, char* argv[])
{
// 定义mysql指针并初始化
MYSQL *mysql=mysql_init(NULL);
if(mysql== NULL)
{
printf("init err! 数据库初始化错误!\n");
return -1;
}
// 初始化成功就连接数据库
mysql = mysql_real_connect(mysql,HOST,USER,PASSWORD,DBNAME,0,NULL,0);
if(mysql == NULL)
{
printf("connect err! 数据库连接失败! \n");
return -1;
}
printf("测试成功!\n");
// 最后关闭连接
mysql_close(mysql);
return 0;
}
2.查询代码
/*************************************************************************
> File Name: connect.c
> Author: 杨永利
> Mail: 1795018360@qq.com
> Created Time: 2020年08月14日 星期五 20时39分56秒
************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
// 定义连接时所需要的数据宏
#define HOST "127.0.0.1" // 所连数据库的ip 127.0.0.1是本机ip
#define USER "root" // 数据库用户
#define PASSWORD "123456" // 该用户密码(自设)
#define DBNAME "test" // 要操作的数据库名
// 打印结果集函数
void show_result(MYSQL_RES * result)
{
//打印表头
unsigned int num_fields;
unsigned int i;
// MYSQL_FIELD 该结构包含关于字段的信息,如字段名、类型和大小
MYSQL_FIELD *fields;
// 返回结果集中的行数。
num_fields = mysql_num_fields(result);
// mysql_fetch_fields 对于结果集,返回所有MYSQL_FIELD结构的数组。每个结构提供了结果集中1列的字段定义。
fields = mysql_fetch_fields(result);
// 输出结果
for(i = 0; i < num_fields; i++)
{
printf("%s\t", fields[i].name);
}
// 这个输出是打造表的结构边框便于查看数据,准确的输出按照你的数据自行增加减去+号
printf("\n+----+-------+\n");
// 行数
MYSQL_ROW row;
num_fields = mysql_num_fields(result);//取字段个数
while ((row = mysql_fetch_row(result)))//循环取一行
{
for(i = 0; i < num_fields; i++)
{
// 看是否为空
printf("%s\t", row[i] ? row[i] : "NULL");
}
printf("\n");
}
}
int main(int argc, char* argv[])
{
// 定义mysql指针并初始化
MYSQL *mysql=mysql_init(NULL);
if(mysql== NULL)
{
printf("init err! 数据库初始化错误!\n");
return -1;
}
// 初始化成功就连接数据库
mysql = mysql_real_connect(mysql,HOST,USER,PASSWORD,DBNAME,0,NULL,0);
if(mysql == NULL)
{
printf("connect err! 数据库连接失败! \n");
return -1;
}
printf("数据库连接成功!\n");
// 定义查询语句
char rSql[256]={0};
// 我的表名为example
strcpy(rSql,"select * from example");
// 查询指向的SQL查询
if(mysql_query(mysql,rSql) != 0){
printf("mysql_query err! 查询失败\n");
exit(1);
}
// 取回结果集
int i=0;
// mysql_store_result()将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中。
MYSQL_RES * result = mysql_store_result(mysql);
MYSQL_ROW row;
if(result != NULL){
//需要打印结果集
show_result(result);
mysql_free_result(result);//释放结果集
}
// 最后关闭连接
mysql_close(mysql);
printf("数据库关闭成功!\n");
return 0;
}
3.插入代码
/*************************************************************************
> File Name: insert.c
> Author: 杨永利
> Mail: 1795018360@qq.com
> Created Time: 2020年08月14日 星期五 21时44分30秒
************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
// 定义连接时所需要的数据宏
#define HOST "127.0.0.1" // 所连数据库的ip 127.0.0.1是本机ip
#define USER "root" // 数据库用户
#define PASSWORD "123456" // 该用户密码(自设)
#define DBNAME "test" // 要操作的数据库名
int main(int argc, char* argv[]){
// 定义mysql指针并初始化
MYSQL *mysql=mysql_init(NULL);
if(mysql== NULL)
{
printf("init err! 数据库初始化错误!\n");
return -1;
}
// 初始化成功就连接数据库
mysql = mysql_real_connect(mysql,HOST,USER,PASSWORD,DBNAME,0,NULL,0);
if(mysql == NULL)
{
printf("connect err! 数据库连接失败! \n");
return -1;
}
printf("数据库连接成功!\n");
// 定义查询语句
char rSql[256]={0};
strcpy(rSql,"insert into example values(4,'admin')");
if(mysql_query(mysql,rSql) != 0){
printf("mysql_query err\n");
exit(1);
}
printf("数据插入成功!\n");
// 最后关闭连接
mysql_close(mysql);
return 0;
}
4.客户端代码
/*************************************************************************
> File Name: client.c
> Author: 杨永利
> Mail: 1795018360@qq.com
> Created Time: 2020年08月14日 星期五 21时49分15秒
************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
// 定义连接时所需要的数据宏
#define HOST "127.0.0.1" // 所连数据库的ip 127.0.0.1是本机ip
#define USER "root" // 数据库用户
#define PASSWORD "123456" // 该用户密码(自设)
#define DBNAME "test" // 要操作的数据库名
void show_result(MYSQL_RES * result,MYSQL *mysql)
{
//打印表头
unsigned int num_fields;
unsigned int i;
MYSQL_FIELD *fields;
num_fields = mysql_num_fields(result);
fields = mysql_fetch_fields(result);
for(i = 0; i < num_fields; i++)
{
printf("%s\t", fields[i].name);
}
printf("\n----------------------------------------------------------\n");//华丽分割线
MYSQL_ROW row;
num_fields = mysql_num_fields(result);//取字段个数
while ((row = mysql_fetch_row(result)))//循环取一行
{
for(i = 0; i < num_fields; i++)
{
printf("%s\t", row[i] ? row[i] : "NULL");
}
printf("\n");
}
printf("\n----------------------------------------------------------\n");//华丽分割线
//3 rows in set (0.28 sec)
printf("%ld rows in set \n",mysql_affected_rows(mysql));//影响的数目
}
int main(int argc, char* argv[]){
// 定义mysql指针并初始化
MYSQL *mysql=mysql_init(NULL);
if(mysql== NULL)
{
printf("init err! 数据库初始化错误!\n");
return -1;
}
// 初始化成功就连接数据库
mysql = mysql_real_connect(mysql,HOST,USER,PASSWORD,DBNAME,0,NULL,0);
if(mysql == NULL)
{
printf("connect err! 数据库连接失败! \n");
return -1;
}
printf("数据库连接成功!\n");
// 客户端操作
printf("welcome to mysql!\n");
char rSql[1024]={0};
printf("输入quit退出!\n");
while(1)
{
// STDIN_FILENO表示标准输入
write(STDOUT_FILENO,"yoursql>",8);
memset(rSql,0x00,sizeof(rSql));
// 标准输出 STDOUT_FILENO
read(STDIN_FILENO,rSql,sizeof(rSql));//读入sql
if(strncmp(rSql,"quit",4) == 0){
printf("bye bye!欢迎下次使用!\n");
break;
}
//执行sql
if(mysql_query(mysql,rSql) != 0){
printf("mysql_query err\n");
continue;
}
//取回结果集
int i=0;
MYSQL_RES * result = mysql_store_result(mysql);
MYSQL_ROW row;
if(result != NULL){
//需要打印结果集
show_result(result,mysql);
mysql_free_result(result);//释放结果集
}else
{
//输出例如:Query OK, 1 row affected (0.16 sec)
printf("Query OK, %ld row affected \n",mysql_affected_rows(mysql));
//printf("%ld products updated",(long) mysql_affected_rows(&mysql));
}
}
// 最后关闭连接
mysql_close(mysql);
return 0;
}
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献9条内容
所有评论(0)