Linux C语言实现对MySQL数据库中表的内容进行增删查改操作

C API Data Structures

MYSQL

This structure represents the handler for one database connection. It is used for almost all MySQL functions. Do not try to make a copy of a MYSQL structure. There is no guarantee that such a copy will be usable.

MYSQL_RES

This structure represents the result of a query that returns rows (SELECT, SHOW, DESCRIBE, EXPLAIN). The information returned from a query is called the result set in the remainder of this section.

MYSQL_ROW

This is a type-safe representation of one row of data. It is currently implemented as an array of counted byte strings. (You cannot treat these as null-terminated strings if field values may contain binary data, because such values may contain null bytes internally.) Rows are obtained by calling mysql_fetch_row().

C API Function Overview

mysql_init():          Gets or initializes a MYSQL structure.
mysql_real_connect():  Connects to a MySQL server. 
mysql_query():         Executes an SQL query specified as a null-terminated string.
mysql_use_result():    Initiates a row-by-row result set retrieval.
mysql_fetch_row():     Fetches the next row from the result set
mysql_num_fields():    Returns the number of columns in a result set.
mysql_free_result():   Frees memory used by a result set.
mysql_store_result():  Retrieves a complete result set to the client.
mysql_num_rows():      Returns the number of rows in a result set.
mysql_close():         Closes a server connection
mysql_error():         Returns the error message for the most recently invoked MySQL function.
mysql_affected_rows(): Returns the number of rows changed/deleted/inserted by the last UPDATE, DELETE, or INSERT query.

query.c

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
    if(argc!=2)
    {
        printf("error args\n");
        return -1;
    }
    MYSQL *conn;     
    MYSQL_RES *res;   //保存查询结果的指针
    MYSQL_ROW row;  
    char* server="localhost";
    char* user="root";
    char* password="123";
    char* database="test";//要访问的数据库名称
    char query[300]="select * from person where name='";
    sprintf(query,"%s%s%s",query, argv[1],"'");  //SQL语句
    /* strcpy(query,"select * from Person"); */
    puts(query);     //检查SQL语句本身有没有语法问题
    unsigned int t,r;
    conn=mysql_init(NULL);    //获得或初始化一个MYSQL结构
    if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))  //连接一个MySQL服务器
    {
        printf("Error connecting to database:%s\n",mysql_error(conn));
        return -1;
    }
    else
    {
        printf("Connected...\n");
    }
    //将SQL语句通过conn传递给数据库
    t=mysql_query(conn,query);  //执行指定为一个空结尾的字符串的SQL查询
    if(t)  //t>0表示不成功
    {
        printf("Error making query:%s\n",mysql_error(conn));
    }
    else
    {

        //用mysql_num_rows可以得到查询的结果集有几行
        //要配合mysql_store_result使用
        //结果保存在res中
        //res = mysql_store_result(conn);   //检索一个完整的结果集合给客户
        //printf("mysql_num_rows=%ld\n",mysql_num_rows(res));  //返回一个结果集合中的行的数量
        
        //不保存,每次使用直接去数据库那边去取
        res=mysql_use_result(conn);  //初始化一个一行一行的结果集合的检索
        row = mysql_fetch_row(res);   //从结果集合中取得下一行
        if(row == NULL)
        {
            printf("Didn't find data\n");
        }
        else
        {
            do{	
                //printf("num=%d\n",mysql_num_fields(res));//列数
                for(t=0;t<mysql_num_fields(res);t++) //返回一个结果集合中的列的数量
                {
                    printf("%8s ",row[t]);  
                }
                printf("\n");
            }while((row=mysql_fetch_row(res))!=NULL);  //从结果集合中取得下一行
        }
        mysql_free_result(res);  //释放一个结果集合使用的内存
    }
    mysql_close(conn);  //关闭一个服务器连接
    return 0;
}

insert.c

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char* server="localhost";
    char* user="root";
    char* password="123";
    char* database="test";
    char query[200]="insert into person(name,english,science) values('bluk',60,60)";
    int t,r;
    conn=mysql_init(NULL);
    if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
    {
        printf("Error connecting to database:%s\n",mysql_error(conn));
    }
    else
    {
        printf("Connected...\n");
    }
    //将SQL语句通过conn传递给数据库
    //执行指定为一个空结尾的字符串的SQL查询
    t=mysql_query(conn,query);
    if(t)   //t>0表示不成功
    {
        printf("Error making query:%s\n",mysql_error(conn));
    }else{
        printf("insert success\n");
    }
    mysql_close(conn);    //关闭一个服务器连接
    return 0;
}

update.c

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
    if(argc!=2)
    {
        printf("error args\n");
        return -1;
    }
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char* server="localhost";
    char* user="root";
    char* password="123";
    char* database="test";
    char query[200]="update Person set LastName='"; 
    sprintf(query,"%s%s%s",query,argv[1],"' where personID=5");
    puts(query);
    int t,r;
    conn=mysql_init(NULL);
    if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
    {
        printf("Error connecting to database:%s\n",mysql_error(conn));
    }
    else
    {
        printf("Connected...\n");
    }
    t=mysql_query(conn,query);
    if(t)
    {
        printf("Error making query:%s\n",mysql_error(conn));
    }
    else
    {
        printf("update success\n");
    }
    mysql_close(conn);
    return 0;
}

delete.c

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char* server="localhost";
    char* user="root";
    char* password="123";
    char* database="test";
    char query[200]="delete from Person where FirstName='xiong'";
    int t,r;
    conn=mysql_init(NULL);
    if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
    {
        printf("Error connecting to database:%s\n",mysql_error(conn));
    }
    else
    {
        printf("Connected...\n");
    }
    t=mysql_query(conn,query);
    if(t)
    {
        printf("Error making query:%s\n",mysql_error(conn));
    }
    else
    {
        printf("delete success,delete row=%ld\n",(long)mysql_affected_rows(conn));
    }
    mysql_close(conn);
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,我们可以使用MySQL提供的API来实现MySQL数据库增删查改操作。以下是一些基本的MySQL操作示例: 1. 连接MySQL数据库 ```c #include <mysql.h> MYSQL *conn; conn = mysql_init(NULL); /* 连接数据库 */ if (!mysql_real_connect(conn, "localhost", "root", "password", "database_name", 0, NULL, 0)) { printf("%s\n", mysql_error(conn)); exit(1); } ``` 2. 插入数据 ```c char *query; query = "INSERT INTO table_name (column1, column2, ...) VALUES ('value1', 'value2', ...)"; if (mysql_query(conn, query)) { printf("%s\n", mysql_error(conn)); exit(1); } ``` 3. 查询数据 ```c MYSQL_RES *result; MYSQL_ROW row; char *query; int num_fields; query = "SELECT * FROM table_name"; if (mysql_query(conn, query)) { printf("%s\n", mysql_error(conn)); exit(1); } result = mysql_store_result(conn); num_fields = mysql_num_fields(result); while ((row = mysql_fetch_row(result))) { for(int i = 0; i < num_fields; i++) { printf("%s ", row[i] ? row[i] : "NULL"); } printf("\n"); } mysql_free_result(result); ``` 4. 更新数据 ```c char *query; query = "UPDATE table_name SET column1='value1', column2='value2', ... WHERE condition"; if (mysql_query(conn, query)) { printf("%s\n", mysql_error(conn)); exit(1); } ``` 5. 删除数据 ```c char *query; query = "DELETE FROM table_name WHERE condition"; if (mysql_query(conn, query)) { printf("%s\n", mysql_error(conn)); exit(1); } ``` 注意:以上代码示例仅供参考,实际使用时需要根据具体情况进行修改。同时,在使用MySQL API操作数据库时,需要注意SQL注入攻击等安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值