使用数据库步骤:
1.引用头文件<mysql/mysql.h>
2.makefile 链接加上-lmysqlclient
3.初始化client
4.建立连接
5.client向server发送sql语句,server返回client结果
6.断开连接

一 连接数据库
mysql_init(MYSQL * pmysql)
MYSQL  *mysql_real_connect(MYSQL *pmysql, const char *hostname,const char *username,const char *passwd, const char*dbname,0,0,0);
//连接到MySQL之后必须先调用mysql_init初始化
//之后调用mysql_real_connect连接到数据库
//mysql_real_connect成功返回指向MySQL连接的指针,失败返回NULL

二 执行SQL语句
int mysql_query(MYSQL *pmysql, const char *sql);
//参数pmysql是连接到MySQL的指针
//参数sql是要执行的sql语句
//成功返回0,失败返回非0

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <mysql/mysql.h>
#include <errno.h>
int main()
{
    MYSQL mysql, *connection;
    mysql_init(&mysql);
    connection = mysql_real_connect(&mysql,"localhost","dbuser1","dbuser1", "db1",0, 0, 0);
    if(connection == NULL)
    {
        printf("connect error, %s\n", mysql_error(&mysql));
        return -1;
    }
    if(mysql_query(connection, "SET NAMES utf8 " ) != 0)
    {
        printf("set character utf8 error, %s\n", mysql_error(&mysql));
        return -1;
    }

    printf("请输入要干掉的名字>");fflush(stdout);
    char SQL[1024];
    memset(SQL, 0,sizeof(SQL));
    char name[1024];
    memset(name, 0,sizeof(name));

    read(STDIN_FILENO,name,sizeof(name));

    name[strlen(name) -1] = 0;
    sprintf(SQL,"DELETE FROM table1 WHERE name = '%s' ",name);
    printf("'%s'\n", SQL);

    if(mysql_query(connection, SQL ) != 0)
    {
        printf("query error, %s\n", mysql_error(&mysql));
        return -1;
    }

    mysql_close(connection);

    return EXIT_SUCCESS;
}

三 执行Select语句
MYSQL_RES *mysql_store_result(MYSQL *pmysql);
//成功返回一个查询结果指针,查询无结果或者错误返回NULL
mysql_free_result(MYSQL_RES *res)
//调用完mysql_store_result,一定要用mysql_free_result释放相关资源

四 查看查询结果
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
/*例子*/
while( (row = mysql_fetch_row(result) )!= NULL)
{
    printf("name:%s,sex:%s,age:%s,class:%s\n",row[0],row[1],row[2],row[3]);//尽管age是数字,但row返回的是NULL结尾的字符串
}

void select()
{

    if(mysql_query(connection,"SELECT * FROM table1") != 0)
    {
        printf("query error, %s\n", mysql_error(&mysql));
        return -1;
    }

    MYSQL_RES * result = mysql_store_result(connection);
    MYSQL_ROW  row;
    while(1)
    {
        if(row == NULL)
            break;
        row = mysql_fetch_row(result);
        printf("name:%s,sex:%s,age:%s,class:%s\n",row[0],row[1],row[2],row[3]);//尽管age是数字,但row返回的是NULL结尾的字符串
    }

    mysql_free_result(result);
}

五 查看数据库字段信息
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);
//mysql_fetch_row返回是记录(行)
//mysql_fetch_field返回是字段(列)
/*例子*/
while((sqlField = mysql_fetch_field(result))!=NULL)
{
    printf("%s\n", sqlField->name);

}


备份地址: 【Linux下Mysql