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)
解决方案 »
- 不同系统 mysql远程调用问题 求大神指教 小弟感激不尽
- 请教高手
- 请问用什么命令可以删去mysql数据库中字段的空格?
- 用MySQL做集群时的一个异常
- update 了chaged为零的原因 请教大家!!!
- 多条件但字段不固定如何查询,请高手帮忙。
- 刚开始接触MySql,请教大家一些问题。
- 求助:装了MSSQL后MYSQL无法启动?
- 各位,谁能告诉我怎么在MySql Control Center的sql pane中一次执行多条sql语句。
- 谁知道合理设置mysql配置文件吗,总是出现这个问题could not retrieve connection info from pool
- 紧急求救!!!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