Linux 环境下使用 C API 连接 MYSQL 数据库

1.安装mysql

安装命令:$sudo apt-get install mysql-server mysql-client

2.安装MySQL的开发库

安装命令:$sudo apt-get install libmysqlclient-dev

C APIs 包含在 mysqlclient 库文件中,安装成功后,相关文件如下:
头文件在/usr/include/mysql目录下;
库文件在/usr/lib/mysql和/usr/lib目录下;

3.代码(文件名:mysql.c)

#include <stdio.h>
#include <string.h>
#include <mysql.h>

int main(int argc, char *argv[])
{

    MYSQL conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    int s,t;

    char *server = "localhost";//服务器地址(这里是本地)
    char *user = "root";//用户名
    char *password = "1234";//密码
    char *database = "mysql";//数据库名

    //初始化mysql结构
    mysql_init(&conn); 

    //mysql默认端口为3306
    if(!mysql_real_connect(&conn,server,user,password,database,3306,NULL,0)) 
    {   
        printf("数据库连接发生错误: %s\n", mysql_error(&conn)); 
    }
    else 
    {
        printf("数据库连接成功!\n"); 
    }

    //解决读取中文时可能会出现的乱码问题
    s = mysql_query(&conn, "set names 'utf8'");

    //执行'读取students表中的所有数据'的SQL'查询 
    t = mysql_query(&conn, "select * from students"); 

    if(s || t) 
        printf("查询语句错误: %s\n",mysql_error(&conn)); 
    else 
    {
        //检索完整的结果集至客户端 
        res = mysql_store_result(&conn); 

        while(row = mysql_fetch_row(res)) //从结果集中获取下一行
        { 
            for(t = 0; t < mysql_num_fields(res); t++) //返回结果集中的列数
                printf("%s",row[t]);         
            printf("\n"); 
        } 
    } 

    //释放结果集的空间
    mysql_free_result(res); 

    //关闭服务器连接
    mysql_close(&conn);   
    return 0;
} 

4.编译:

编译命令:
gcc mysql.c -o mysql -I /usr/include/mysql -L /usr/lib -lmysqlclient (注意:-I 是大写的 i,不是小写的 L)

编译 :gcc -c mysql.c -I /usr/include/mysql/
这里的-I 是指定头文件目录 -c 是编译成目标代码

连接 :gcc mysql.o -o test -L /usr/lib/ -lmysqlclient
这里的-L是指定库文件路径 这个参数-lmysqlclient是因为 C API代码包含在mysqlclient库中,正因为有了它才允许C程序访问数据库

5.参考

1.Ubuntu 10.04下C连接MySQL数据库
http://www.linuxidc.com/Linux/2012-05/61314.htm
2.Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
http://www.ha97.com/5359.html
3.C API–Linux上C语言读取MySQL数据库内容
http://www.ahlinux.com/c/9619.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值