晚上小研究了下mysql儲存於讀取二進位制資料的功能。關鍵步驟為以下三點:
最重要的一點:儲存二進位制資料的表的型別需要是blob型別(按長度不同分為tiny, media, long)
插入二進位制資料時需要利用mysql_real_escape_string函式對資料進行轉換
從資料庫中讀取二進位制資料時需要利用mysql_fetch_length函式字段長度,該函式需要在mysql_fetch_row呼叫後才可以正常獲取結果
給出乙個用c寫的乙個儲存與讀取欄位的小例子,寫的比較粗獷,見諒哈~
先來乙個插入:
int
db_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);
return 0;
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;
}
php以及perl中的操作也是大同小異~
over~
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 命令提示視窗,你可以...