晚上小研究了下mysql儲存於讀取二進位制資料的功能。關鍵步驟為以下三點:最重要的一點:儲存二進位制資料的表的型別需要是blob型別(按長度不同分為tiny, media,
long
) 插入二進位制資料時需要利用mysql_real_escape_string函式對資料進行轉換
從資料庫中讀取二進位制資料時需要利用mysql_fetch_length函式字段長度,該函式需要在mysql_fetch_row呼叫後才可以正常獲取結果
給出乙個用c寫的乙個儲存與讀取欄位的小例子,寫的比較粗獷,見諒哈~先來乙個插入:
複製**
intdb_insert_object(
void *object, unsigned int
objsize)
/*convert binary string
*/escape_object = (char *)malloc(escape_size);
if( escape_object ==null )
escape_size = mysql_real_escape_string(mysql, escape_object, (char *)object
, objsize);
sql_len = sprintf(sql, "
insert into task(object) values('%s')
", escape_object);
ret =mysql_real_query(mysql, sql, sql_len);
if( ret )
free(escape_object);
mysql_close(mysql);
return0;
error1:
printf(
"error: %s\n
", mysql_error(mysql));
if( mysql ) mysql_close(mysql);
if( escape_object ) free(escape_object);
return -1;}
複製**
然後是讀取:
複製**
void *db_fetch_object()
/*get object
*/ret =mysql_real_query(mysql, sql, strlen(sql));
if( ret )
res =mysql_store_result(mysql);
if( res ==null )
/*important
*/row =mysql_fetch_row(res);
row_len = mysql_fetch_lengths(res); /*
get the object's length
*/if( row_len ==null )
objsize = row_len[0
];
object = (char*)malloc(objsize);
if( object ==null )
memcpy(
object, row[0
], objsize);
mysql_close(mysql);
mysql_free_result(res);
return (void*)object
;error2:
printf(
"error: %s\n
", mysql_error(mysql));
if( res ) mysql_free_result(res);
if( mysql ) mysql_close(mysql);
if( object ) free(object
);
return
null;
}
好像還有一種直接點mysql api可以儲存二進位制資料。
MySQL儲存二進位制資料
晚上小研究了下mysql儲存於讀取二進位制資料的功能。關鍵步驟為以下三點 最重要的一點 儲存二進位制資料的表的型別需要是blob型別 按長度不同分為tiny,media,long 插入二進位制資料時需要利用mysql real escape string函式對資料進行轉換 從資料庫中讀取二進位制資料...
mysql儲存二進位制 mysql 儲存二進位制資料
晚上小研究了下mysql儲存於讀取二進位制資料的功能。關鍵步驟為以下三點 最重要的一點 儲存二進位制資料的表的型別需要是blob型別 按長度不同分為tiny,media,long 插入二進位制資料時需要利用mysql real escape string函式對資料進行轉換 從資料庫中讀取二進位制資料...
mysql二進位制 MySql二進位制連線方式詳解
使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示視窗,你可以...