日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql二进制大文件_Mysql实例Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)...

發布時間:2023/12/2 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql二进制大文件_Mysql实例Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

《Mysql實例Mysql LONGTEXT 類型存儲大文件(二進制也可以) (修改+調試+整理)》要點:

本文介紹了Mysql實例Mysql LONGTEXT 類型存儲大文件(二進制也可以) (修改+調試+整理),希望對您有用。如果有疑問,可以聯系我們。#include "stdafx.h"

//是前一篇的姊妹篇

//代碼來自網絡,我學習整理了一下,測試通過,下面的參數

//需要設置為你自己的

//在DBMS中線要創建數據庫www,table www,file字段數據類型用LONGTEXT即可測試

//測試文件c:\\test.iso,你可以找任何一個文件修改為即可,我找的是一個exe程序,修改為test.iso而已

//最大測試過加入文件大小為650M(一個正真的iso文件)

//注意:還要修改my.ini文件中的max_allowed_packet字段,我設置的是

代碼如下:

//max_allowed_packet = 1024M

//#define host "localhost" //mysql server

//#define username "root"

//#define password "674800"

//#define database "test"

//int port = 3306;

#include

#include

#include

#include

#include

#include

#include

#define host "localhost" //mysql server

#define username "root"

#define password "674800"

#define database "www"

int port = 3306;

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

//得到文件的大小(字節數)

int get_file_size(char *path, off_t *size)

{

struct stat file_stats;

if(stat(path, &file_stats))

return -1;

*size = file_stats.st_size;

return 0;

}

int main(int argc, char *argv[])

{

char *filename=NULL;

off_t size;

MYSQL *conn=NULL;

MYSQL_RES *res_set=NULL;

MYSQL_ROW row;

MYSQL_FIELD *field=NULL;

int i, flag;

char *sql; //sql語句

FILE *fp;

char *buf;

int n=256;

char *end;

unsigned long *length;

/* if (argc != 2)

{

printf("Usage: %s srcfile\n", argv[0]);

exit(1);

}

*/

filename = "c:\\test.iso";

if ((get_file_size(filename, &size)) == -1) //得到文件的大小

{

perror("get file size" );

exit(1);

}

if ((buf = (char *)malloc(sizeof(char)*(size+1))) == NULL)

{

perror("malloc buf" );

exit(1);

}

if ((fp = fopen(filename, "rb" )) == NULL) //讀文件

{

perror("fopen file" );

exit(1);

}

if ((n = fread(buf, 1, size, fp)) < 0) //讀文件失敗

{

perror("fread file" );

exit(1);

}

sql = (char *)malloc(sizeof(char)*n*2+256); //2n+1+strlen(other sql)

if (sql == NULL)

{

perror("malloc sql" );

exit(1);

}

conn = mysql_init(NULL);//生產一個mysql對象

if (conn == NULL)

{

printf("init mysql, %s\n", mysql_error(conn));

exit(1);

}

if ((mysql_real_connect(conn, host, username, password, database, port, NULL, 0)) == NULL) //連接服務器

{

printf("connect mysql, %s\n", mysql_error(conn));

exit(1);

}

strcpy(sql, "insert into www(id, name, file) values(NULL, 'peter', " );

end = sql;

end += strlen(sql); //point sql tail

//convert NUL(ASCII 0)、'\n'、'\r'、'\''、'''、'"'和Control-Z and so on

*end++ = '\'';

end += mysql_real_escape_string(conn, end, buf, n);

*end++ = '\'';

*end++ = ')';

flag = mysql_real_query(conn, sql, (unsigned int)(end-sql));

if (flag != 0)

{

printf("insert failed, %s\n", mysql_error(conn));

exit(1);

}

if ((mysql_real_query(conn, "SELECT file FROM www where id=1", 31)) != 0)

{

printf("insert failed, %s\n", mysql_error(conn));

exit(1);

}

res_set = mysql_store_result(conn);

fclose(fp);

fp = NULL;

fp = fopen("c:\\123.iso", "wb" );

while ((row = mysql_fetch_row(res_set)) != NULL)

{

length = mysql_fetch_lengths(res_set);

for (i=0; i

{

fwrite(row[0], 1, length[0], fp);

//printf("%s\n",row[0]);

}

}

fclose(fp);

mysql_close(conn);

free(sql);

free(buf);

sql = NULL;

return 0;

}

運行結果:

總結

以上是生活随笔為你收集整理的mysql二进制大文件_Mysql实例Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。