MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
发布时间:2020-12-12 03:13:01 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)》要点: 本文介绍了MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理),希望对您有用。如果有疑问,可以联系我们。 在DBMS中线要创建数据库test,table bintest,data字段数据类型
《MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)》要点: //测试文件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; // Mysql3.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Winsock2.h> #include <mysql.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #pragma comment(lib,"libmysql.lib") #define INSERT_QUERY "INSERT INTO bintest(id,data) VALUES(NULL,?)" #define host "localhost" //mysql server #define username "root" #define password "674800" #define database "test" int port = 3306; 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; } void test() { MYSQL_BIND bind[1]; unsigned long length; char* pos = NULL; off_t size; FILE* fp; char* filename = "c:test.iso"; if ((get_file_size(filename,&size)) == -1) //得到文件的大小 { perror("get file size" ); exit(1); } if ((pos = (char *)malloc(sizeof(char)*(size+1))) == NULL) { perror("malloc buf" ); exit(1); } if ((fp = fopen(filename,"rb" )) == NULL) //读文件 { perror("fopen file" ); exit(1); } if ((fread(pos,1,size,fp)) < 0) //读文件失败 { perror("fread file" ); exit(1); } MYSQL *mysql = mysql_init(NULL); //mysql 初始化 if (!mysql) return; if (!mysql_real_connect(mysql,host,username,password,"test",port,NULL,0))//链接服务器 { int ret = mysql_errno(mysql); mysql_close(mysql); return; } MYSQL_STMT *stmt = mysql_stmt_init(mysql); if (!stmt) { fprintf(stderr," mysql_stmt_init(),out of memoryn"); exit(0); } if (mysql_stmt_prepare(stmt,INSERT_QUERY,strlen(INSERT_QUERY))) { fprintf(stderr,"n mysql_stmt_prepare(),INSERT failed"); fprintf(stderr,"n %s",mysql_stmt_error(stmt)); exit(0); } memset(bind,sizeof(bind)); //bind[0].buffer_type= MYSQL_TYPE_STRING; //bind[0].buffer_type = MYSQL_TYPE_LONG; bind[0].buffer = pos; //bind[0].buffer_type = MYSQL_TYPE_TINY; bind[0].buffer_type = MYSQL_TYPE_BLOB; bind[0].length= &length; bind[0].is_null= 0; /* Bind the buffers */ if (mysql_stmt_bind_param(stmt,bind)) { fprintf(stderr,"n param bind failed"); fprintf(stderr,mysql_stmt_error(stmt)); exit(0); } int rc =0; /* Supply data in chunks to server */ if (mysql_stmt_send_long_data(stmt,pos,size)) { fprintf(stderr,"n send_long_data failed"); fprintf(stderr,mysql_stmt_error(stmt)); exit(0); } // pos += size; /* Supply the next piece of data */ if (mysql_stmt_send_long_data(stmt,mysql_stmt_error(stmt)); exit(0); } /* Now,execute the query */ if (mysql_stmt_execute(stmt)) { fprintf(stderr,"n mysql_stmt_execute failed"); fprintf(stderr,mysql_stmt_error(stmt)); exit(0); } } int main() { test(); //sleep(1); return 0; } 运行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读