用mysql儲存二進位制資料流

2021-05-26 21:35:23 字數 2136 閱讀 1573

近日一專案遇到需要在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()

; 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.***",

"root",

"db_user_name",

"test",

3306, null, 0))

mysql_stmt *stmt = mysql_stmt_init(mysql);

if (!stmt)

if (mysql_stmt_prepare(stmt, insert_query, strlen(insert_query)))

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

int rc =0;

/* supply data in chunks to server */

if (mysql_stmt_send_long_data(stmt,0, pos, size))

pos += size;

/* supply the next piece of data */

if (mysql_stmt_send_long_data(stmt,0, pos, size))

/* now, execute the query */

if (mysql_stmt_execute(stmt)) }

int main()

(王朝網路 wangchao.net.cn)

MySQL儲存二進位制資料

晚上小研究了下mysql儲存於讀取二進位制資料的功能。關鍵步驟為以下三點 最重要的一點 儲存二進位制資料的表的型別需要是blob型別 按長度不同分為tiny,media,long 插入二進位制資料時需要利用mysql real escape string函式對資料進行轉換 從資料庫中讀取二進位制資料...

mysql 儲存二進位制資料

晚上小研究了下mysql儲存於讀取二進位制資料的功能。關鍵步驟為以下三點 最重要的一點 儲存二進位制資料的表的型別需要是blob型別 按長度不同分為tiny,media,long 插入二進位制資料時需要利用mysql real escape string函式對資料進行轉換 從資料庫中讀取二進位制資料...

C 二進位制資料流工具類

在實際的專案開發中,很多地方都會應用的二進位制資料,比如客戶端伺服器的通訊 使用者資料的儲存以及一些遊戲資料的儲存。所以寫了此類以方便進行類的序列化和反序列化操作。此類包含的大小端的設定,如果只是客戶端使用,可以忽略。類名datastream 使用方法 1.寫資料 datastream stream...