最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql LONGTEXT 類型存儲大文件(二進制也可以) (修改+調(diào)試+整理)

 更新時間:2009年07月09日 14:27:10   作者:  
MySql2.cpp : Defines the entry point for the console application.
#include "stdafx.h"
//是前一篇的姊妹篇
//代碼來自網(wǎng)絡,我學習整理了一下,測試通過,下面的參數(shù)
//需要設置為你自己的
//在DBMS中線要創(chuàng)建數(shù)據(jù)庫www,table www,file字段數(shù)據(jù)類型用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 <Winsock2.h>
#include <stdio.h>
#include <mysql.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define host "localhost" //mysql server
#define username "root"
#define password "674800"
#define database "www"
int port = 3306;
#pragma comment(lib,"libmysql.lib")
//得到文件的大小(字節(jié)數(shù))
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);//生產(chǎn)一個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<mysql_num_fields(res_set); 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;
}

運行結(jié)果:

相關文章

  • windows 安裝解壓版 mysql5.7.28 winx64的詳細教程

    windows 安裝解壓版 mysql5.7.28 winx64的詳細教程

    這篇文章主要介紹了windows 安裝解壓版 mysql5.7.28 winx64的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • MySQL如何實現(xiàn)快速插入大量測試數(shù)據(jù)

    MySQL如何實現(xiàn)快速插入大量測試數(shù)據(jù)

    這篇文章主要介紹了MySQL如何實現(xiàn)快速插入大量測試數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • MySQL錯誤Forcing close of thread的兩種解決方法

    MySQL錯誤Forcing close of thread的兩種解決方法

    這篇文章主要介紹了MySQL錯誤Forcing close of thread的兩種解決方法,需要的朋友可以參考下
    2014-11-11
  • MySQL 8.0.41圖文詳細安裝教程 附安裝包

    MySQL 8.0.41圖文詳細安裝教程 附安裝包

    本文詳細介紹了MySQL 8.0.41的安裝步驟,包括下載安裝包、選擇安裝模式、設置數(shù)據(jù)庫密碼、配置系統(tǒng)環(huán)境變量以及驗證安裝結(jié)果,適合初學者和企業(yè)級應用,感興趣的朋友一起看看吧
    2025-03-03
  • mysql創(chuàng)建外鍵報錯的原因及解決(can't?not?create?table)

    mysql創(chuàng)建外鍵報錯的原因及解決(can't?not?create?table)

    這篇文章主要介紹了mysql創(chuàng)建外鍵報錯的原因及解決方案(can't?not?create?table),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Mysql查詢優(yōu)化的一些實用方法總結(jié)

    Mysql查詢優(yōu)化的一些實用方法總結(jié)

    對于MySQL查詢語句來說,效率是最重要的,下面這篇文章主要給大家介紹了關于Mysql查詢優(yōu)化的一些實用方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • SQL?JOIN?子句合并多個表中相關行全面指南

    SQL?JOIN?子句合并多個表中相關行全面指南

    這篇文章主要為大家介紹了SQL?JOIN?子句合并多個表中相關行全面指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 一條 SQL 語句執(zhí)行過程

    一條 SQL 語句執(zhí)行過程

    這篇文章主要介紹了一條 SQL 語句執(zhí)行過程的相關資料,沒人詳細具有一的的參考價值,需要的小伙伴可以參考一下,希望對你的學習和工作有所幫助
    2022-03-03
  • MYSQL復雜查詢練習題以及答案大全(難度適中)

    MYSQL復雜查詢練習題以及答案大全(難度適中)

    在我們學習mysql數(shù)據(jù)庫時需要一些題目進行練習,下面這篇文章主要給大家介紹了關于MYSQL復雜查詢練習題以及答案的相關資料,文中通過實例代碼介紹的非常詳細,這些練習題難度適中,需要的朋友可以參考下
    2022-08-08
  • 淺談Mysql insert on duplicate key 死鎖問題定位與解決

    淺談Mysql insert on duplicate key 死鎖問

    本文介紹了在并發(fā)場景下的 insert on duplicate key update sql 出現(xiàn)的死鎖,經(jīng)過分析發(fā)現(xiàn)這種sql確實比較容易造成死鎖,這篇文章就從分析死鎖展開,到最終如何解決這樣的問題 分享相應的思路,感興趣的可以了解一下
    2022-05-05

最新評論

南通市| 双峰县| 陵川县| 东源县| 锡林浩特市| 英山县| 巍山| 登封市| 张掖市| 凤庆县| 房产| 南乐县| 海口市| 拉孜县| 新巴尔虎左旗| 烟台市| 咸宁市| 宁国市| 闻喜县| 河西区| 乌拉特后旗| 博兴县| 水富县| 灵寿县| 清苑县| 高青县| 大荔县| 杂多县| 宜兰县| 陵川县| 汤阴县| 武威市| 团风县| 沽源县| 瑞安市| 射阳县| 湖州市| 临城县| 琼结县| 宣城市| 哈尔滨市|