C++调用MySQL(版本:5.051a)的API访问数据库,我设定的字段为LongBLOB,理论上支持4G存储空间,但我在调用mysql_stmt_bind_param(stmt, bind)和mysql_stmt_execute(stmt)的时候发生LIBMYSQL.DLL崩溃的错误,0xC0000005:Access Violation。询问正确写LongBLOG字段的代码。我有问题的代码:这个代码只能插入长度小于13K字节的数据到数据库,超出会导致LIBMYSQL.DLL崩溃//char *LESSTHEN16M //变量的值从文件中读取,作为参数传入,类型是Char *stmt = mysql_stmt_init(DBhandle); bind[1].buffer_type= MYSQL_TYPE_BLOB;
bind[1].buffer= (char *)&LESSTHEN16M;
bind[1].buffer_length = LESSTHEN16MLenth; //它的长度也一并作为参数传入
bind[1].is_null= &is_null;
bind[1].length= &LESSTHEN16MLenth; mysql_stmt_prepare(stmt, InsertECGData, strlen(InsertECGData))
mysql_stmt_bind_param(stmt, bind) //前面都正常
mysql_stmt_execute(stmt) //但执行到这一句,DLL就崩溃 修改后的代码:可以插入长度小于1M的数据,但大于1M会导致
char LESSTHEN16M[1024000]; // 我修改了类型定义,变为字符型数组,当大小为1M以下,可以正常插入,而大于1M时,会导致NTDLL.DLL错误:Unhandled exception in trymysql.exe(NTDLL.DLL):0xc00000FD:Stack Overflowstmt = mysql_stmt_init(DBhandle); //程序在执行到这一句发生错误,NTDLL.DLL溢出程序崩溃bind[1].buffer_type= MYSQL_TYPE_BLOB; //下面的没有变化
bind[1].buffer= (char *)&LESSTHEN16M;
bind[1].buffer_length = LESSTHEN16MLenth;
bind[1].is_null= &is_null;
bind[1].length= &LESSTHEN16MLenth; mysql_stmt_prepare(stmt, InsertECGData, strlen(InsertECGData))
mysql_stmt_bind_param(stmt, bind)
mysql_stmt_execute(stmt)
bind[1].buffer= (char *)&LESSTHEN16M;
bind[1].buffer_length = LESSTHEN16MLenth; //它的长度也一并作为参数传入
bind[1].is_null= &is_null;
bind[1].length= &LESSTHEN16MLenth; mysql_stmt_prepare(stmt, InsertECGData, strlen(InsertECGData))
mysql_stmt_bind_param(stmt, bind) //前面都正常
mysql_stmt_execute(stmt) //但执行到这一句,DLL就崩溃 修改后的代码:可以插入长度小于1M的数据,但大于1M会导致
char LESSTHEN16M[1024000]; // 我修改了类型定义,变为字符型数组,当大小为1M以下,可以正常插入,而大于1M时,会导致NTDLL.DLL错误:Unhandled exception in trymysql.exe(NTDLL.DLL):0xc00000FD:Stack Overflowstmt = mysql_stmt_init(DBhandle); //程序在执行到这一句发生错误,NTDLL.DLL溢出程序崩溃bind[1].buffer_type= MYSQL_TYPE_BLOB; //下面的没有变化
bind[1].buffer= (char *)&LESSTHEN16M;
bind[1].buffer_length = LESSTHEN16MLenth;
bind[1].is_null= &is_null;
bind[1].length= &LESSTHEN16MLenth; mysql_stmt_prepare(stmt, InsertECGData, strlen(InsertECGData))
mysql_stmt_bind_param(stmt, bind)
mysql_stmt_execute(stmt)
解决方案 »
- IT民工深夜求SQL查询语句,大大们求救
- 为难了,这种SQL语句应该如何写,求各种提示
- 紧急求助 MYSQL 修改密码后登陆不上去!
- 格式化查询结果
- 不同schema数据迁移
- MySQL:请问各位高手是如何处理mysql的频繁查询和插入,删除操作的?
- mysql字段text的属性的问题!
- 谁能给个优秀的表结构.谢恩.......
- update后,mysql_affected_rows()返回为0时,如何区分是因为没有匹配上条件,还是因为更新字段和原先字段一样的情况
- 求教mysql语句, 详情见图片
- 紧急求救!!!mysql中"you can't specify target table"错误
- 一个很奇怪的insert导致表被锁住的问题
条件:直接调用LIBMYSQL.DLL,我不想用ODBC,ADO...;至少应该可以插入100M以上的数据。
绝对诚信,说到做到,不守信用可以BS我,羞辱我,人肉我。
周同学13913853272.
唯一有效的动态方式是使用API:
mysql_stmt_send_long_data
max_allowed_packet = 16M
max_allowed_packet = 16M