MYSQL数据库的连接及使用(C语言版)

一、环境准备

1. 已安装MySQL服务器和客户端

2. 发环境已配置MySQL C Connector

        1. Linux: sudo apt-get install libmysqlclient-dev

        2. Windows: 在MySQL安装目录中包含libmysql.lib

二、数据库准备(一下使用的是Linux系统)

1. 创建用户 tom(创建数据库bank为例)

sudo mysql

create database bank;

create user tom@'%' identified by '123456';

2. 授权 tom 访问数据库 bank 中所有的数据对象

grant all on bank.* to tom@'%';

3. 验证用户能否连接(以上做好后输入这个命令,在输入设置的密码就能进入,该用户无法创建数据库,)

mysql -u tom -p

4. 如果需要所有权限

-- 授予全部权限
GRANT ALL PRIVILEGES ON bank.* TO 'tom'@'%';
FLUSH PRIVILEGES;

-- 或者只授予部分权限(更安全)
GRANT SELECT, INSERT, UPDATE, DELETE ON bank.* TO 'tom'@'%';
FLUSH PRIVILEGES;

三、连接数据库

1. 修改 mysql 配置文件,允许远程连接,若服务IP为 127.0.0.1 本地回环地址,不能远程连接

sudo netstat -tpnl | grep mysql

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

进入mysqld.cnf中改为 bind_address= 0.0.0.0

2. 重启服务后,在编译程序时就能输入命令连接数据库

sudo service mysql restart

sudo systemctl restart mysql

3. 编写C程序(连接数据库示例)

// my.c
// 标准库:      /usr/include
// 第三方库:   /usr/include/mysql
#include<stdio.h>
#include<mysql/mysql.h>


int main(int argc, char const *argv[])
{
    // 数据库连接
    MYSQL *conn;
    //初始化新的数据库连接,若资源不足初始换化失败NULL
    conn = mysql_init(NULL);
    if(!conn){
        // file 打印输出
        fprintf(stderr,"初始化错误:%s\n",mysql_error(conn));
        return 1;
    }

    //输入自己设置的参数
    char *host      = "127.0.0.1";
    char *user      = "tom";
    char *passwd    = "123456";
    char *db        = "bank";
    int port        = 3306;
    // 连接数据库
    if(!mysql_real_connect(conn,host,user,passwd,db,port,NULL,0)){
        fprintf(stderr,"连接失败:%s\n",mysql_error(conn));
        mysql_close(conn);
        return 1;
    }
    printf("连接成功\n");

    // 初始化成功,则必须释放资源
    mysql_close(conn);
    return 0;
}

四、数据库函数的使用

1. MySQL API

结构体

- MYSQL         数据库连接,

- MYSQL_RES     result 结果集,查询返回的多行数据构成的内存结构

- MYSQL_ROW     一行记录,字符串数组,row[0],row[1],row[n-1]

- MYSQL_ROWS    由 MYSQL_ROW 构成的链表

函数

- `mysql_init`              初始化数据库连接,没有连接

- `mysql_close`             释放数据库连接

- `mysql_error`             显示错误信息,字符串显示

- `mysql_real_connect`      建立数据库连接,TCP套接字

- `mysql_query`             执行SQL语句:insert,update,delete,select

- `mysql_store_result`      加载select结果集,使用缓存,

- `mysql_use_result`        加载select结果集

- `mysql_free_result`       释放结果集

- `mysql_num_rows`          结果集中的元数据:行数

- `mysql_num_fields`        结果集中的元数据:列数

- `mysql_fetch_row`         从结果集获得一行数据

- `mysql_insert_id`         获得插入记录的自动生成ID

以上为部分函数及功能详情可见 MYSQL API

2.程序的编译

//my.c为文件名
gcc my.c -o my -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值