c mysql二进制_C、C++写二进制数据到mysql的Blob字段

-- 引子--

由于调试需要,需直接往数据库里写入二进制数据。本来这些数据是由上层软件来写的,用的是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

#include

#include

#include

#include

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");

for(i=0; i

destIDs[i] = i + 1;

mysql_init(&mysql);

if(!(mysql_real_connect(&mysql, "localhost", "root", "654321", "dbname", 0, NULL, 0)))

{

fprintf(stderr, "Couldn't connect to engine!\n%s\n", mysql_error(&mysql));

perror("");

exit(1);

}

sprintf(sql, "INSERT INTO Task(NumDest, DestIDs) VALUE (%u, ", index );

end = sql + strlen(sql)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值