MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
所以我们应该熟悉Linux下mysql的增删改查
sudo apt-get update //更新软件源
sudo apt-get install mysql-server //安装mysql
2.在Linux环境下安装libmysqlclient-dev
sudo apt-get install libmysqlclient-dev
3.编译c文件时加上-I /usr/include/mysql/ -lmysqlclient
gcc -o mysql Mysql.c -I /usr/include/mysql/ -lmysqlclient
4.创建表id,姓名,性别
代码如下(示例):
MYSQL mysql;
if (NULL == mysql_init(&mysql)) {
printf("mysql_init :%s\n", mysql_error(&mysql));//打印错误信息
return -1;
}
//ip //用户名 //密码 //数据库名 //端口号
if (!mysql_real_connect(&mysql, BIEAI_DB_SERVER_IP, BIEAI_DB_USERNAME, BIEAI_DB_PASSWORD, BIEAI_DB_DEFAULTDB, BIEAI_DB_SERVER_PORT, NULL, 0)) {//返回0成功
printf("mysql_real_connect :%s\n", mysql_error(&mysql));//打印错误信息
return -2;
}
代码如下(示例):
printf("case: mysql --> insert");
if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {
printf("mysql_real_query: %s\n", mysql_error(&mysql));
}
代码如下(示例):
int bieai_mysql_select(MYSQL* handle) {
//mysql_real_query -->sql
if (mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))) {
printf("mysql_real_query: %s\n", mysql_error(handle));
return -1;
}
//store
MYSQL_RES* res = mysql_store_result(handle);
if (res == NULL) {
printf("mysql_store_result: %s\n", mysql_error(handle));
return -2;
}
//rows / fields
int rows = mysql_num_rows(res);
printf("rows: %d\n", rows);
int fields = mysql_num_fields(res);
printf("fields: %d\n", fields);
//fetch
MYSQL_ROW row;
while ((row = mysql_fetch_row(res))) {
for (int i = 0; i < fields; ++i) {
printf("%s\t", row[i]);
}
printf("\n");
}
mysql_free_result(res);
return 0;
}
因为我选择了不安全操作,需要三条SQL语句,所以用存储过程打包。
存储过程的代码如下(示例):
DELIMITER **
CREATE PROCEDURE PROC_DELETE_USER(IN UNAME VARCHAR(32))
BEGIN
SET SQL_SAFE_UPDATES=0;
DELETE from TBL_USER WHERE U_NAME=UNAME;
SET SQL_SAFE_UPDATES=1;
END**
代码如下(示例):
printf("case: mysql --> delete");
if (mysql_real_query(&mysql, SQL_DELETE_TBL_USER, strlen(SQL_DELETE_TBL_USER))) {
printf("mysql_real_query: %s\n", mysql_error(&mysql));
}
代码如下(示例):
#include
#include
#include
#define BIEAI_DB_SERVER_IP "192.168.230.128"
#define BIEAI_DB_SERVER_PORT 3306
#define BIEAI_DB_USERNAME "admin"
#define BIEAI_DB_PASSWORD "131420"
#define BIEAI_DB_DEFAULTDB "BIEAI_DB"
#define SQL_INSERT_TBL_USER "INSERT TBL_USER(U_NAME,U_GENGDER) VALUES('lisi','boy');" //添加sql语句
#define SQL_SELECT_TBL_USER "SELECT * FROM TBL_USER;" //查询sql语句
#define SQL_DELETE_TBL_USER "CALL PROC_DELETE_USER('lisi')" //删除sql语句
int bieai_mysql_select(MYSQL* handle) {
//mysql_real_query -->sql
if (mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))) {
printf("mysql_real_query: %s\n", mysql_error(handle));
return -1;
}
//store
MYSQL_RES* res = mysql_store_result(handle);
if (res == NULL) {
printf("mysql_store_result: %s\n", mysql_error(handle));
return -2;
}
//rows / fields
int rows = mysql_num_rows(res);
printf("rows: %d\n", rows);
int fields = mysql_num_fields(res);
printf("fields: %d\n", fields);
//fetch
MYSQL_ROW row;
while ((row = mysql_fetch_row(res))) {
for (int i = 0; i < fields; ++i) {
printf("%s\t", row[i]);
}
printf("\n");
}
mysql_free_result(res);
return 0;
}
int main() {
MYSQL mysql;
if (NULL == mysql_init(&mysql)) {
printf("mysql_init :%s\n", mysql_error(&mysql));
return -1;
}
if (!mysql_real_connect(&mysql, BIEAI_DB_SERVER_IP, BIEAI_DB_USERNAME, BIEAI_DB_PASSWORD, BIEAI_DB_DEFAULTDB, BIEAI_DB_SERVER_PORT, NULL, 0)) {//返回0成功
printf("mysql_real_connect :%s\n", mysql_error(&mysql));
return -2;
}
//MYSQL INSERT
#if 1
printf("case: mysql --> insert");
if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {
printf("mysql_real_query: %s\n", mysql_error(&mysql));
}
#endif
bieai_mysql_select(&mysql);
//MYSQL DELETE
#if 1
printf("case: mysql --> delete");
if (mysql_real_query(&mysql, SQL_DELETE_TBL_USER, strlen(SQL_DELETE_TBL_USER))) {
printf("mysql_real_query: %s\n", mysql_error(&mysql));
}
#endif
bieai_mysql_select(&mysql);
mysql_close(&mysql);
return 0;
}
今天我给大家展示了Linux下mysql的安装,以及CRUD(增删改查),主要使用了c语言调用mysql的api实现。
C/C++ Linux高级开发课程