C语言读写 mysql blob 二进制文件

这篇博客介绍了如何使用C语言将二进制文件写入和读取MySQL数据库中的BLOB字段。通过定义缓冲区、使用mysql_real_escape_string()函数处理二进制数据,并结合mysql_query()执行SQL语句,实现了二进制数据的写入。读取过程包括构造查询字符串、执行查询、存储结果并用mysql_fetch_row取出数据。
-- 引子--

  由于调试需要,需直接往数据库里写入二进制数据。本来这些数据是由上层软件来写的,用的是C#。为了熟悉C语言的数据库操作,还是决定用C来写这段调试代码。

概况:

  表名:Task

  涉及的字段及属性:

       NumDest:int(11)  用于存储目标数目

       destIDs:   blob        用于存储具体的目标ID

废话不多说,入正题。



--二进制数据写入--

  二进制数据最为常见的就是图片等一些文件信息。虽然我这里不是这类型信息,但确实是二进制数据。

  具体步骤:

1、 定义一个buffer(如数组)来存储sql语句

2、 把涉及到二进制数据之前的sql语句添加到buffer中,可用sprintf或strcpy等。

3、 用mysql_real_escape_string()函数添加二进制数据到buffer中。

4、 加上剩余的sql语句,形成完整的sql语句。

5、 利用mysql_real_query()函数来执行sql语句。

具体代码如下:


#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
#include <stdint.h>
#include <string.h>

int main(int argc, char *argv[])
{
    MYSQL mysql;
    char sql[256], *end;
    int index, i;
    uint32_t *destIDs;

    if(argc != 2)
    {
        printf("enter error!\n");
        exit(1);
    }
    index = atoi(argv[1]);
    printf("index: %d\n", index);
    destIDs = (uint32_t *)malloc(index * sizeof(uint32_t));
    if(destIDs == NULL)
        printf("malloc error\n")

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值