各位大侠,怎么把二进制的文件中的数据放进mysql中MEDIUMBLOB字段中阿?

walkany 2003-04-29 04:38:42
各位大侠,怎么用C语言程序把二进制的文件中的数据放进mysql中MEDIUMBLOB字段中阿?
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkany 2003-04-30
  • 打赏
  • 举报
回复
我是用C语言来操作数据库,可是没有办法生成insert语句,而且用select查询到的数据不能得到.怎么办阿
walkany 2003-04-30
  • 打赏
  • 举报
回复
现在insert 语句已经尝试成功了, select 却总也不成功,
if((row=mysql_fetch_row(res))!=NULL)
{
strcpy(buf,row[0]);//不成功,段错误,
//len=sizeof(row[0]); //不成功,值为4
len=mysql_fetch_lengths(res); //不成功,数值太大,100M,
printf("\n the length is %i, len=%i",strlen(buf),len);
//fwrite(/*buf*/ row[0],1,len,fp);


各位大侠,应该怎样取得blob字段的值阿?救命阿!
shuixin13 2003-04-30
  • 打赏
  • 举报
回复
char query[1000],*end;

end = strmov(query,"INSERT INTO test_table values(");
*end++ = '\'';
end += mysql_real_escape_string(&mysql, end,"What's this",11);
*end++ = '\'';
*end++ = ',';
*end++ = '\'';
end += mysql_real_escape_string(&mysql, end,"binary data: \0\r\n",16);
*end++ = '\'';
*end++ = ')';

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
{
fprintf(stderr, "Failed to insert row, Error: %s\n",
mysql_error(&mysql));
}
The strmov() function used in the example is included in the mysqlclient library and works like strcpy() but returns a pointer to the terminating null of the first parameter.
shuixin13 2003-04-29
  • 打赏
  • 举报
回复
读入二进制文件,
把它当作一个长字符串,
然后进行必要的字符转义
就可以插入数据了



如果你想要把二进制数据插入到一个字符类型的字段中(例如BLOB),下列字符必须由转义序列表示:

NUL
ASCII 0,你应该用 “\0”(一个反斜线和一个ASCII “0”字符)表示它。
\
ASCII 92,反斜线。需要用 “\\” 表示。
'
ASCII 39,单引号。需要用 “\'” 表示。
"
ASCII 34,双引号。需要用 “\"” 表示。

如果你写 C 代码,你可以使用 C API 函数mysql_real_escape_string() 来为 INSERT 语句转义字符。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧