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