//需要设置为你⾃⼰的
//在DBMS中线要创建数据库test,table bintest,data字段数据类型⽤LONGBLOB即可测试
//测试⽂件c:\\\est.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 #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:\\\est.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\链接服务器 { 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 memory\\n\"); exit(0); } if (mysql_stmt_prepare(stmt, INSERT_QUERY, strlen(INSERT_QUERY))) { fprintf(stderr, \"\\n mysql_stmt_prepare(), INSERT failed\"); fprintf(stderr, \"\\n %s\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\"); fprintf(stderr, \"\\n %s\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\"); fprintf(stderr, \"\\n %s\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\"); fprintf(stderr, \"\\n %s\exit(0); } /* Now, execute the query */ if (mysql_stmt_execute(stmt)) { fprintf(stderr, \"\\n mysql_stmt_execute failed\"); fprintf(stderr, \"\\n %s\exit(0); } } int main() { test(); //sleep(1); return 0; } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务