当前位置: 首页 > news >正文

php mysql 二进制_用mysql存储二进制数据流

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 近日一项目遇到需要在DB中存储2进制数据流类型文件的问题,发现常用的mysql API都用不了,再研究,方知有一套专门的API来干这种数据,功能相当强大的说。 以下即为范例代码 --- 按照说明编译即可用,

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

近日一项目遇到需要在DB中存储2进制数据流类型文件的问题,发现常用的mysql API都用不了,再研究,方知有一套专门的API来干这种数据,功能相当强大的说。

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

view plaincopy to clipboardprint?

/*

mysql数据库存储二进制数据 linux

用途: 用 mysql_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);

}

[1] [2]

test.jsp?url=http%3A%2F%2Fwww.chinaitlab.com%2Fcms%2Fimages%2Flogo14.gif&refer=http%3A%2F%2FLinux.chinaitlab.com%2FMYSQL%2F936473.html

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

相关文章:

  • 如何修改mysql连接哪个数据库_如何修改MySQL数据库名称
  • mysql hibernate save_java Hibernate save()与persist()区别
  • mysql database 函数_MySQL中DATABASE()和CURRENT_USER()函数的示例详解
  • mysql 21_MySQL中,21个写SQL的好习惯(修正版)
  • mysql limit 后子查询_Mysql子查询用limit
  • mysql5.5.62怎么使用_centos7 安装 mysql5.5.62
  • php mysql 排名算法_PHP实现四种基础排序算法的运行时间比较(推荐)
  • python 输出字典字符_从服务器到字典的python输出字符串
  • 用el表达式取出mysql中的值_用c标签,el表达式动态取数据库中的值并显示在页面上,动态下拉列表的实现,html:select...
  • 抓狐狸python_Python运算符
  • mysql数据库set names_MySQL数据库之mysql SET NAMES
  • python xls 合并为 cvs_使用python把csv汇总成excel
  • python 可迭代对象和迭代器区别_python生成器,可迭代对象,迭代器区别和联系...
  • java打印文件_java 循环打印文件夹文件
  • java sql系统_用Java实现数据库应用系统
  • [Vue CLI 3] 配置解析之 css.extract
  • 【翻译】babel对TC39装饰器草案的实现
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • CentOS6 编译安装 redis-3.2.3
  • iOS 颜色设置看我就够了
  • Js基础——数据类型之Null和Undefined
  • js算法-归并排序(merge_sort)
  • mysql 数据库四种事务隔离级别
  • nodejs调试方法
  • PHP面试之三:MySQL数据库
  • React组件设计模式(一)
  • spring security oauth2 password授权模式
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vue学习第二天
  • 多线程事务回滚
  • 机器学习中为什么要做归一化normalization
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 普通函数和构造函数的区别
  • 前端临床手札——文件上传
  • 区块链共识机制优缺点对比都是什么
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 线性表及其算法(java实现)
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • #pragam once 和 #ifndef 预编译头
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)STM32单片机上位机
  • (定时器/计数器)中断系统(详解与使用)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (一一四)第九章编程练习
  • 、写入Shellcode到注册表上线
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net framework4与其client profile版本的区别
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net对接阿里云CSB服务