晚上小研究了下MySQL存储于读取二进制数据的功能。关键步骤为以下三点:
最重要的一点:存储二进制数据的表的类型需要是blob类型(按长度不同分为tiny, media,long)
插入二进制数据时需要利用mysql_real_escape_string函数对数据进行转换
从数据库中读取二进制数据时需要利用mysql_fetch_length函数字段长度,该函数需要在mysql_fetch_row调用后才可以正常获取结果
给出一个用C写的一个存储与读取字段的小例子,写的比较粗犷,见谅哈~先来一个插入:
复制代码intdb_insert_object(void *object, unsigned intobjsize)
{intret;char *escape_object =NULL;char sql[1024];
unsignedint escape_size = 2 * objsize + 2;intsql_len;
MYSQL*mysql=NULL;/*connnect db*/mysql=mysql_init(NULL);if( !mysql_real_connect(mysql, SERVER, USER, PASSWD, DATABASE, 0, NULL, 0) ){gotoerror1;
}/*convert binary string*/escape_object= (char *)malloc(escape_size);if( escape_object ==NULL ){gotoerror1;
}
escape_size= mysql_real_escape_string(mysql, escape_object, (char *)object, objsize);
sql_len= sprintf(sql, "insert into