专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » mysqllongtext:在Mysql中用 LONGTEXT 类型存储大文件 »正文

mysqllongtext:在Mysql中用 LONGTEXT 类型存储大文件

来源: 发布时间:星期日, 2009年8月16日 浏览:4次 评论:0
// MySql2.cpp : Defines the entry po for the console application.
//

# "stdafx.h"

//是前姊妹篇

//代码来自网络我学习整理了测试通过下面参数
//需要设置为你自己
//在DBMS中线要创建数据库wwwtable wwwfile字段数据类型用LONGTEXT即可测试
//测试文件c:\\test.iso你可以找任何个文件修改为即可我找个exe修改为test.iso而已
//最大测试过加入文件大小为650M(个正真iso文件)

//注意:还要修改my.ini文件中max_allowed_packet字段我设置

//max_allowed_packet = 1024M

//# host "localhost" //mysql server
//# username "root"
//# password "674800"
//# database "test"
// port = 3306;


# <Winsock2.h>

# <stdio.h>
# <mysql.h>
# <stdlib.h>
# <sys/types.h>
# <sys/stat.h>
# <fcntl.h>

# host "localhost" //mysql server
# username "root"
# password "674800"
# database "www"
port = 3306;

#pragma comment(lib,"libmysql.lib")

//得到文件大小(字节数)
get_file_size(char *path, off_t *size)
{
struct stat file_stats;

(stat(path, &file_stats))
-1;

*size = file_stats.st_size;
0;
}
( argc, char *argv)
{
char *filename=NULL;
off_t size;

MYSQL *conn=NULL;
MYSQL_RES *res_=NULL;
MYSQL_ROW row;
MYSQL_FIELD *field=NULL;
i, flag;
char *sql; //sql语句
FILE *fp;
char *buf;
n=256;
char *end;
unsigned long *length;

/* (argc != 2)
{
prf("Usage: %s srcfile\n", argv[0]);
exit(1);
}
*/
filename = "c:\\test.iso";
((get_file_size(filename, &size)) -1) //得到文件大小
{
perror("get file size" );
exit(1);
}

((buf = (char *)malloc((char)*(size+1))) NULL)
{
perror("malloc buf" );
exit(1);
}
((fp = fopen(filename, "rb" )) NULL) //读文件
{
perror("fopen file" );
exit(1);
}

((n = fread(buf, 1, size, fp)) < 0) //读文件失败
{
perror("fread file" );
exit(1);
}
sql = (char *)malloc((char)*n*2+256); //2n+1+strlen(other sql)
(sql NULL)
{
perror("malloc sql" );
exit(1);
}

conn = mysql_init(NULL);//生产个mysql对象
(conn NULL)
{
prf("init mysql, %s\n", mysql_error(conn));
exit(1);
}

((mysql_real_connect(conn, host, username, password, database, port, NULL, 0)) NULL) //连接服务器
{
prf("connect mysql, %s\n", mysql_error(conn));
exit(1);
}

strcpy(sql, "insert o www(id, name, file) values(NULL, 'peter', " );
end = sql;
end strlen(sql); //po sql tail
//convert NUL(ASCII 0)、'\n'、'\r'、'\'’、'''、'"'和Control-Z and so _disibledevent=>end mysql_real_escape_(conn, end, buf, n);
*end = '\'';
*end = ')';

flag = mysql_real_query(conn, sql, (unsigned )(end-sql));
(flag != 0)
{
prf("insert failed, %s\n", mysql_error(conn));
exit(1);
}

((mysql_real_query(conn, "SELECT file FROM www where id=1", 31)) != 0)
{
prf("insert failed, %s\n", mysql_error(conn));
exit(1);
}
res_ = mysql_store_result(conn);

fclose(fp);
fp = NULL;

fp = fopen("c:\\123.iso", "wb" );
while ((row = mysql_fetch_row(res_)) != NULL)
{
length = mysql_fetch_lengths(res_);
for (i=0; i<mysql_num_fields(res_); i)
{
fwrite(row[0], 1, length[0], fp);
//prf("%s\n",row[0]);
}
}

fclose(fp);
mysql_close(conn);
free(sql);
free(buf);
sql = NULL;

0;
}

运行结果:

运行结果

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: