提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
完整问题描述
QSqlError(“2036”, “QMYSQL3: Unable to bind value”, “Using unsupported buffer type: 437325656 (parameter: 3)”)
继上一次Qt连接数据库报错QSqlDatabase: QMYSQL driver not loaded,通过添加sql动态连接文件libmysql.dll解决后,又被tableView控件可视化操作数据库和query.addBindValue(),query.bindValue()多行插入一直失败困扰,今天终于得到解决
一、tableView控件插入数据失败
1.错误描述
输入要插入的数据点击按钮触发submitAll()
model->submitAll();//提交动作
事件后,数据插入失败,但是删除数据和查找是能成功执行的,lastError()
qDebug()<<model->lastError();
打印错误提示显示错误QSqlError(“2036”, “QMYSQL3: Unable to bind value”, “Using unsupported buffer type: 437325656 (parameter: 3)”).
2.问题查找
百度问题,大多是都是说数据库驱动,连接文件之类的,还有说到这个报错是版本太高,所以后面下载了不是很高的版本的文件做尝试,最后基本确定还是libmysql.dll文件的问题,虽然上次使用的文件能成功连接数据库但是依然存在问题,于是偶然发现了MySQL官网Oracle有适用各个平台的各个版本的连接下载,
下载地址
Qt选择的是
MySQL Connector/C
3.成功解决
由于上一次数据库连接失败,上一文:
Qt连接数据库报错QSqlDatabase: QMYSQL driver not loaded
:写到的尝试过将下载的mysql中的libmysql.dll文件添加到Qt目录中失 败认为可能是mysql 64位和Qt 32位,位数不匹配的问题,此次我选择下载了不是很新(6.1.1 2017)版本的64(mysql-connector-c-6.1.11-winx64.zip)位和32(mysql-connector-c-6.1.11-win32.zip)版本做尝试。
压缩文件lib目录下就有libmysql.dll文件,放到Qt bin目录下覆盖原来的文件,直接编译运行,依然报错QSqlDatabase: QMYSQL driver not loaded吗,然后使用32位的文件,**成功运行,且测试多行数据插入,完美执行,数据插入成功,最后在tableView中插入数据,也成功插入数据,最后问题完美解决!
总结:
本来都不打算解决这个问题因为实在没有头绪,觉得可能是操作版本不兼容之类的问题也不想再重装数据库,开发环境啥的,实在太麻烦,看到有的大佬重装过几个版本的数据库都失败,真的是很佩服解决问题的决心和行动力。
有这个问题的小伙伴可以试试,刚开始写博客记录错误解决,排版啥的还不是很熟悉····