It turns out that operating Mysql in C language is so simple

d82414117cd3fac5abfdcc9620dde11b.png

Lost little book boy

Needed after reading

10

minute

Speed ​​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

aa51135202e32f1ba30d9adca1adf673.png

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

f99206fa93313e425790f2e99f361290.png

change a record

507ecfdd143e4e714272b1a7588c4059.png

Query the records

9b56954b98f5a6961f960fbf746c8902.png

Delete Record

ab681a53b4c4497c2537e7f4df04e54c.png

7

   

References

  1. https://github.com/mysql

8

   

free community

a269c87bf91a39062bf835a033e3eca0.jpeg

ae2e52c274b0be11607adfa29cba4abf.gif

Guess you like

Origin blog.csdn.net/djstavaV/article/details/133191611