Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)分享

在DBMS中线要创建数据库test,table bintest,data字段数据类型用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&#8221? #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&#8221?; exit(0); } if (mysql_stmt_prepare(stmt, INSERT_QUERY, strlen(INSERT_QUERY))) { fprintf(stderr, “n mysql_stmt_prepare(), INSERT failed&#8221?; fprintf(stderr, “n %s”, mysql_stmt_error(stmt)); exit(0); } memset(bind, 0, 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&#8221?; fprintf(stderr, “n %s”, mysql_stmt_error(stmt)); exit(0); } int rc =0; /* Supply data in chunks to server */ if (mysql_stmt_send_long_data(stmt,0, pos, size)) { fprintf(stderr, “n send_long_data failed&#8221?; fprintf(stderr, “n %s”, mysql_stmt_error(stmt)); exit(0); } // pos += size; /* Supply the next piece of data */ if (mysql_stmt_send_long_data(stmt,0, pos, size)) { fprintf(stderr, “n send_long_data failed&#8221?; fprintf(stderr, “n %s”, mysql_stmt_error(stmt)); exit(0); } /* Now, execute the query */ if (mysql_stmt_execute(stmt)) { fprintf(stderr, “n mysql_stmt_execute failed&#8221?; fprintf(stderr, “n %s”, mysql_stmt_error(stmt)); exit(0); } } int main() { test(); //sleep(1); return 0; }

运行结果:

—-想了解更多的数据库相关异常处理怎么解决关注

本站无法对海量内容真伪性鉴别,请勿相信本站任何号码,邮件,站外网址等信息,如有需要,请自行甄别。版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至net@163.com举报,一经查实,本站将立刻删除。
(0)
上一篇 2022年8月11日 上午10:41
下一篇 2022年8月11日 上午10:53

相关推荐

发表回复

登录后才能评论