如何用mysql提供的C API实现文件的存取?

星之瀚海 2003-06-12 03:20:36
我已经用mysql提供的C API实现了一般数据的存取,但对于其提供的blob,longblob如何存取,一直没有办法解决,那位大侠能不能帮助解决一下,似乎文档中这些资料也不够详细,另外开贴给分
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuixin13 2003-06-20
  • 打赏
  • 举报
回复
呵呵,
最简单的办法

SELECT Col_Blob FROM tA INTO DUMPFILE "C:/123.ZIP"


如果使用 INTO DUMPFILE 代替 INTO OUTFILE,MySQL 将在文件中只写一行,没任何列或行端接和任何转义。如果你希望存储一个 blob 列到文件中,这是非常有用的。



当然最好是通过 流操作来实现
joachern 2003-06-20
  • 打赏
  • 举报
回复
up i/o 好!
星之瀚海 2003-06-16
  • 打赏
  • 举报
回复
那怎么读出来?
chensiping 2003-06-16
  • 打赏
  • 举报
回复
paul dubois 的mysql网络数据库指南就有(机械工业出版社)

把源码贴出来,省得你查了.


#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <mysql.h>


void load_image (MYSQL *conn, FILE *f)
{
char query[1024*200], buf[1024*100], *p;
unsigned long from_len;

sprintf(query,"insert into blobtest (blobtest) values ( \'" );
p = query + strlen (query);
while ((from_len = fread (buf, 1, sizeof (buf), f)) > 0)
{
if (p + (2*from_len) + 3 > query + sizeof (query))
{
printf("image too big");
return ;
}
p += mysql_real_escape_string (conn, p, buf, from_len);
}
*p++ = '\'';
*p++ = ')';
strcpy(p," where img_id=1");


mysql_real_query (conn, query, (unsigned long) (p- query));
}

void main ()
{
char *opt_host_name = "192.168.1.253";
char *opt_user_name = "root";
char *opt_password = NULL;
unsigned int opt_port_num = 3306;
char *opt_socket_name = NULL;
char *opt_db_name = "test";
unsigned int opt_flags = 0;
MYSQL *conn;

FILE *f;

conn = mysql_init (NULL);

mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,
opt_db_name, opt_port_num, opt_socket_name, opt_flags);

if ((f = fopen ("c:/test1.JPG", "rb")) == NULL)
{
printf("file open eror!");
return ;
}
load_image (conn, f);
fclose(f);

mysql_close (conn);
return;
}
shuixin13 2003-06-12
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=71276

56,681

社区成员

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

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