Lost little book boy
Needed after reading
10
minuteSpeed reading only takes 4 minutes
1
Introduction
MySQL is a popular relational database management system, and C is a powerful programming language that can interact with MySQL. This blog post will introduce how to use C language to connect, query and operate the MySQL database. We will cover principle implementation, installation steps, usage examples and code analysis to help you quickly get started using C language to operate MySQL database.
2
Principle implementation
The principle of using C language to operate the MySQL database is realized through the C API (Application Programming Interface) provided by MySQL. The C API is a set of functions and data structures that allow developers to communicate with MySQL using the C language. Through these functions, we can connect to the MySQL server, execute SQL operation statements, and process the returned results.
3
installation steps
Before you begin, you need to ensure that you have installed the MySQL database and the corresponding C language development environment. Here is an overview of the installation steps
Install the MySQL database: Depending on your operating system, download and install the version of the MySQL database that applies to you
Install MySQL Connector/C: MySQL Connector/C is the official driver for C language provided by MySQL
Configure the compiler: Make sure your C language compiler is configured correctly and can link to the MySQL Connector/C library
Corresponding to the ubuntu system, the command is
sudo apt install mysql-server mysql-workbench libmysqlclient-dev build-essential
4
Add, delete, modify and check operations
The basic comments are all written in the code, which should be easy to understand, mainly the calls to several important APIs.
First create the database db and build a table. The table structure is as follows
look at the code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
#define MYSQL_HOST "localhost"
#define MYSQL_USER "root"
#define MYSQL_PASSWD "toor"
#define DB_NAME "db"
#define TABLE_NAME "students"
/*
* 测试的数据表结构很简单, number, grade, sex, score 四个字段, 代表学号、年级、性别、分数
*/
/* 连接mysql */
void mysqldb_connect(MYSQL *mysql)
{
if(!mysql_real_connect(mysql, MYSQL_HOST, MYSQL_USER, MYSQL_PASSWD, DB_NAME, 0, NULL, 0)) {
printf("\nFailed to connect:%s\n", mysql_error(mysql));
} else {
printf("\nConnect sucessfully!\n");
}
}
/* 插入数据 */
void mysqldb_insert(MYSQL *mysql, int number, int grade, char *sex, int score)
{
int t;
char *head = "INSERT INTO ";
char query[120];
char field[48] = "number, grade, sex, score";
char *left = "(";
char *right = ") ";
char *values = "VALUES";
char message[100] = {0};
sprintf(message, "%d, %d, \"%s\", %d", number, grade, sex, score);
/* 拼接sql命令 */
sprintf(query, "%s%s%s%s%s%s%s%s%s", head, TABLE_NAME, left, field, right, values, left, message, right);
printf("%s\n", query);
t = mysql_real_query(mysql, query, strlen(query));
if (t) {
printf("Failed to query: %s\n", mysql_error(mysql));
}
else {
printf("\nInsert sucessfully!\n");
}
}
/* 删除数据 */
void mysqldb_delete(MYSQL *mysql, char *field_name, int number)
{
int t;
char *head = "DELETE FROM ";
char query[120];
sprintf(query, "%s%s where %s =%d", head, TABLE_NAME, field_name, number);
printf("%s\n", query);
t = mysql_real_query(mysql, query, strlen(query));
if (t) {
printf("\nFailed to query: %s\n", mysql_error(mysql));
} else {
printf("\nDelete data sucessfully!\n");
}
}
/* 更新数据 */
void mysqldb_update(MYSQL *mysql, char *field_name, int score)
{
int t;
char *head = "UPDATE ";
char query[100];
sprintf(query, "%s%s SET %s=%d", head, TABLE_NAME, field_name, score);
printf("%s\n", query);
t = mysql_real_query(mysql, query, strlen(query));
if (t) {
printf("Failed to update: %s\n", mysql_error(mysql));
return;
}
printf("\nUpdate data sucessfully!\n");
}
/* 查询数据 */
void mysqldb_query(MYSQL *mysql)
{
int t;
char *head = "SELECT * FROM ";
char query[50] = {0};
MYSQL_RES *res;
MYSQL_ROW row;
sprintf(query, "%s%s", head, TABLE_NAME);
t = mysql_real_query(mysql, query, strlen(query));
if (t) {
printf("Failed to query: %s\n", mysql_error(mysql));
return;
} else {
printf("\nQuery successfully!\n");
}
res = mysql_store_result(mysql);
while (row = mysql_fetch_row(res)) {
for(t = 0; t < mysql_num_fields(res); t++) {
printf("%s\t", row[t]);
}
printf("\n");
}
mysql_free_result(res);
}
/* 断开mysql连接 */
void close_connection(MYSQL *mysql)
{
mysql_close(mysql);
}
int main(int argc, char *argv[])
{
// 准备一组数据
int number = 1;
int grade = 1;
char sex[] = "male";
int score = 100;
// 初始化mysql
MYSQL *mysql = mysql_init(NULL);
if (!mysql) {
printf("\nMysql init failed.\n");
}
// 连接MYSQL
mysqldb_connect(mysql);
// 插入数据
mysqldb_insert(mysql, number, grade, sex, score);
// 更新数据
mysqldb_update(mysql, "score", 99);
// 查询数据
mysqldb_query(mysql);
// 删除数据
mysqldb_delete(mysql, "number", number);
// 断开连接
close_connection(mysql);
return 0;
}
For the four operations, when performing the previous operations, you can comment out the ones that have not yet been executed, and then check the results step by step to see if they are consistent with expectations.
5
compile
Use gcc to compile, the command is as follows
gcc -o mysql_in_c mysql_in_c.c -lmysqlclient
Generate executable file mysql_in_c
6
Results of the
add a record
change a record
Query the records
Delete Record
7
References
https://github.com/mysql
8
free community