千家信息网

mysql中怎么存储二进制数据流

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,mysql中怎么存储二进制数据流,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。以下即为范例代码 --- 按照说明编译即可
千家信息网最后更新 2026年11月01日mysql中怎么存储二进制数据流

mysql中怎么存储二进制数据流,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

以下即为范例代码 --- 按照说明编译即可用,稍加修改即可存储2进制文件

view plaincopy to clipboardprint?

/*
mysql存储二进制数据 linux

用途: 用 _stmt_send_long_data()来向blob字段写入2进制数据流.

注意点:需要注意的是bind结构的buffer_type字段,必须与要输入的数据类型相符,
如:只写入一个long 数据,则用MYSQL_TYPE_LONG,写入字符流,用MYSQL_TYPE_STRING,
写入2进制数据流,用MYSQL_TYPE_BLOB
具体这个参数各字段的含义参见 mysql5.0手册

Compile: g++ -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient mysql_test.cpp

准备工作:
create database test;
use test;
CREATE TABLE `bintest` (
`id` int(11) NOT NULL default 0,
`data` blob
) ENGINE=MyISAM;
*/

#include
#include
#include
#include


#define INSERT_QUERY "INSERT INTO bintest(id, data) VALUES(4, ?)"

void test()
{
MYSQL_BIND bind[1];
unsigned long length;

char blog_data[100] = {0};
memset(blog_data, 0x01, sizeof(blog_data));

char* pos = blog_data;
int size = 50;

MYSQL *mysql = mysql_init(NULL);
if (!mysql) return;
if (!mysql_real_connect(mysql,
"192.168.xx.xxx",
"root",
"db_user_name",
"test",
3306, NULL, 0))
{
int ret = mysql_errno(mysql);
mysql_close(mysql);
return;
}

MYSQL_STMT *stmt = mysql_stmt_init(mysql);
if (!stmt)
{
fprintf(stderr, " mysql_stmt_init(), out of memory
");
exit(0);
}
if (mysql_stmt_prepare(stmt, INSERT_QUERY, strlen(INSERT_QUERY)))
{
fprintf(stderr, "
mysql_stmt_prepare(), INSERT failed");
fprintf(stderr, "
%s", mysql_stmt_error(stmt));
exit(0);
}
memset(bind, 0, sizeof(bind));
//bind[0].buffer_type= MYSQL_TYPE_STRING;
//bind[0].buffer_type = MYSQL_TYPE_LONG;
bind[0].buffer = blog_data;
//bind[0].buffer_type = MYSQL_TYPE_TINY;
bind[0].buffer_type = MYSQL_TYPE_BLOB;
bind[0].length= &length;
bind[0].is_null= 0;

/* Bind the buffers */
if (mysql_stmt_bind_param(stmt, bind))
{
fprintf(stderr, "
param bind failed");
fprintf(stderr, "
%s", mysql_stmt_error(stmt));
exit(0);
}

int rc =0;
/* Supply data in chunks to server */
if (mysql_stmt_send_long_data(stmt,0, pos, size))
{
fprintf(stderr, "
send_long_data failed");
fprintf(stderr, "
%s", mysql_stmt_error(stmt));
exit(0);
}

pos += size;

/* Supply the next piece of data */
if (mysql_stmt_send_long_data(stmt,0, pos, size))
{
fprintf(stderr, "
send_long_data failed");
fprintf(stderr, "
%s", mysql_stmt_error(stmt));
exit(0);
}

/* Now, execute the query */
if (mysql_stmt_execute(stmt))
{
fprintf(stderr, "
mysql_stmt_execute failed");
fprintf(stderr, "
%s", mysql_stmt_error(stmt));
exit(0);
}
}


int main()
{
test();
//sleep(1);
return 0;
}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

数据 数据流 存储 字段 进制 二进制 帮助 清楚 代码 内容 参数 含义 字符 对此 手册 文件 文章 新手 更多 用途 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海睿民互联网科技有限公司 广州万易互联网科技有限公司 互联网科技社 金融科技 互联网金融 创业天下互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 来此购互联网科技有限公司 互联网为啥属于高科技 世界互联网科技公司市值排名 知域互联网科技有限公司大骗子 洛阳共同富裕互联网科技有限公司 长沙互联网科技 互联网方面的科技前沿 山东星卡互联网科技有限公司官网 富国互联网金融科技混合基金 互联网安防科技感 普陀区互联网教育科技管理办法 易租星互联网科技有限公司 同城互联网络科技 10位科技互联网大佬 金融科技与互联网金融 互联网科技股票 奇酷互联网科技公司 狮子座互联网科技培训 盛创互联网科技有限公司 互联网实体化科技化 广州恒生互联网科技有限 高科技互联网发展前景如何 互联网高科技行业有哪些企业 网互联网络科技
0