版权声明:This article is a blogger original article, only for study reference, reprint please indicate the source, thank you! https://blog.csdn.net/Rong_Toa/article/details/88410402
Table of Contents
创建数据库
create_db.c
#include <mysql/my_global.h>
#include <mysql/mysql.h>
#include <stdio.h>
int main(int argc, char **argv)
{
MYSQL *con = mysql_init(NULL);
if (con == NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
exit(1);
}
if (mysql_real_connect(con, "localhost", "root", "root ",
NULL, 0, NULL, 0) == NULL)
{
fprintf(stderr, "error:%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
if (mysql_query(con, "CREATE DATABASE testdb"))
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
mysql_close(con);
exit(0);
}
编译:
gcc createdb.c `mysql_config --libs --cflags`
运行与结果查看:
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
5 rows in set (0.00 sec)
mysql> use testdb
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql>
查看MySQL版本
version.c
#include <my_global.h>
#include <mysql.h>
int main(int argc, char **argv)
{
printf("MySQL client version: %s\n", mysql_get_client_info());
exit(0);
}
编译运行:
$ gcc -o a version.c `mysql_config --cflags --libs`
$ ./a
MySQL client version: 5.7.21
显示一个数据库
mysql_test.c
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
int main(int argc, char * argv[])
{
MYSQL * conn;
MYSQL_RES * res;
MYSQL_ROW row;
char server[] = "localhost";
char user[] = "root";
char password[] = "root ";
char database[] = "testdb";
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
if (mysql_query(conn, "show tables"))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
{
printf("%s \n", row[0]);
}
mysql_free_result(res);
mysql_close(conn);
printf("finish! \n");
return 0;
}
连接主机上的数据库
connect.c
/*************************************
* Programming Date :2018年3月31日
* Programming Content:linux环境实现用C语言连接MySql数据库连接操作-编译时加-lmysqlclient
* Author :Sun YiJie
**************************************/
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
#define HOST_NAME "localhost"
#define USER_NAME "root"
#define PASSWORD "root "
#define DATABASES "testdb"
int main(int argc, char * argv[])
{
MYSQL mysql; //定义MYSQL结构体对象
/*分配和初始化mysql对象: mysql_init()*/
if (NULL == mysql_init(&mysql))
{
printf("mysql_init(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
/*连接主机上的MYSQL数据库: mysql_real_connect()*/
if (NULL == mysql_real_connect(
&mysql,
HOST_NAME,
USER_NAME,
PASSWORD,
DATABASES,
0,
NULL,
0
))
{
printf("mysql_real_connect(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
printf("Connect to MySql successful!\n");
/*关闭数据库*/
mysql_close(&mysql);
return 0;
}
插入数据库、从数据库中删除
insertDelMySQL.c
/*************************************
* Programming Date :2018年3月31日
* Programming Content:linux环境实现用C语言插入和删除MySql数据库操作-编译时加-lmysqlclient
* Author :Sun YiJie
**************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
#define HOST_NAME "localhost"
#define USER_NAME "root"
#define PASSWORD "root "
#define DATABASES "testdb"
int main(int argc, char * argv[])
{
MYSQL mysql;
MYSQL_RES * res = NULL;
MYSQL_ROW row;
char * query_str = NULL;
int rc = 0, i = 0, fields = 0;
int rows = 0;
/*分配和初始化mysql对象: mysql_init()*/
if (NULL == mysql_init(&mysql))
{
printf("mysql_init(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
/*连接主机上的MYSQL数据库: mysql_real_connect()*/
if (NULL == mysql_real_connect(
&mysql,
HOST_NAME,
USER_NAME,
PASSWORD,
DATABASES,
0,
NULL,
0
))
{
printf("1-mysql_real_connect(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
printf("---->Connect to MySql successful!<----\n");
query_str = "insert into information values('005', 'Jerry', 25)";
/*执行插入请求*/
rc = mysql_real_query(&mysql, query_str, strlen(query_str));
if (0 != rc)
{
printf("2-mysql_real_query(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
query_str = "delete from information where name = 'Tom'";
/*执行删除请求*/
rc = mysql_real_query(&mysql, query_str, strlen(query_str));
if (0 != rc)
{
printf("3-mysql_real_query(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
query_str = "select * from information";
/*执行数据库指令: mysql_real_query()*/
rc = mysql_real_query(&mysql, query_str, strlen(query_str));
if (0 != rc)
{
printf("4-mysql_real_query(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
/*得到数据库结果集合:mysql_store_result()*/
res = mysql_store_result(&mysql);
if (NULL == res)
{
printf("mysql_store_result(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
/*统计数据库行的数量:mysql_num_rows()*/
rows = mysql_num_rows(res);
printf("This table has %d rows!\n", rows);
/*统计数据库列的数量:mysql_num_fields()*/
fields = mysql_num_fields(res);
printf("This table has %d fields!\n", fields);
/*打印每一行的元素*/
while (row = (mysql_fetch_row(res)))
{
for (i = 0; i < fields; i++)
{
printf("%s\t", row[i]);
}
printf("\n");
}
/*释放数据库结果集和空间*/
mysql_free_result(res);
/*关闭数据库*/
mysql_close(&mysql);
return 0;
}
从数据库中查询
searchMySQL.c
/*************************************
* Programming Date :2018年3月31日
* Programming Content:linux环境实现用C语言查询MySql数据库操作-编译时加-lmysqlclient
* Author :Sun YiJie
**************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
#define HOST_NAME "localhost"
#define USER_NAME "root"
#define PASSWORD "root "
#define DATABASES "testdb"
int main(int argc, char * argv[])
{
MYSQL mysql;
MYSQL_RES * res = NULL;
MYSQL_ROW row;
char * query_str = NULL;
int rc = 0, i = 0, fields = 0;
int rows = 0;
/*分配和初始化mysql对象: mysql_init()*/
if (NULL == mysql_init(&mysql))
{
printf("mysql_init(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
/*连接主机上的MYSQL数据库: mysql_real_connect()*/
if (NULL == mysql_real_connect(
&mysql,
HOST_NAME,
USER_NAME,
PASSWORD,
DATABASES,
0,
NULL,
0
))
{
printf("mysql_real_connect(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
printf("---->Connect to MySql successful!<----\n");
query_str = "select * from information";
/*执行数据库指令: mysql_real_query()*/
rc = mysql_real_query(&mysql, query_str, strlen(query_str));
if (0 != rc)
{
printf("mysql_real_query(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
/*得到数据库结果集合:mysql_store_result()*/
res = mysql_store_result(&mysql);
if (NULL == res)
{
printf("mysql_store_result(): %s\n", mysql_error(&mysql));
exit(EXIT_FAILURE);
}
/*统计数据库行的数量:mysql_num_rows()*/
rows = mysql_num_rows(res);
printf("This table has %d rows!\n", rows);
/*统计数据库列的数量:mysql_num_fields()*/
fields = mysql_num_fields(res);
printf("This table has %d fields!\n", fields);
/*打印每一行的元素*/
while (row = (mysql_fetch_row(res)))
{
for (i = 0; i < fields; i++)
{
printf("%s\t", row[i]);
}
printf("\n");
}
/*释放数据库结果集和空间*/
mysql_free_result(res);
/*关闭数据库*/
mysql_close(&mysql);
return 0;
}
makefile
files=`ls`
all: connectMySQL insertDelMySQL mysql_test searchMySQL
#@echo $(suffix $(files))
@echo $(files)
%:%.c
gcc -o $@ $< `mysql_config --libs --cflags`