win7 64bit 下mysql5.5.36(x86,64bit) ODBC qt5.2连接
来源:互联网 发布:coap协议java 开发 编辑:程序博客网 时间:2024/06/07 05:26
MySQL ODBC 5.2 Unicode Driver 和 MySQL ODBC 5.2 ANSI Driver,我选择了Unicode,配置数据源(mydsn_mysql),在配置界面Test成功,但是当用下面的程序访问时
db = QSqlDatabase::addDatabase("QODBC");db.setDatabaseName("mydsn_mysql");if(db.open()){
model = new QSqlQueryModel(this);model->setQuery("SELECT * FROM city");ui->tableView->setModel(model);}
else{
QMessageBox::warning(this, "warning", db.lastError().text());}
报错“在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配",在网上查了之后,说64bit系统中默认用的是
C:\windows\system32\odbcad32.exe,应该用C:\Windows\SysWOW64\odbcad32.exe,
我打开C:\Windows\SysWOW64\odbcad32.exe,发现并没有在驱动程序里没有MySQL 的驱动
(此处图片仅为示意图,我再解决问题前没有截图
后来看到有的是通过安装32bit 驱动解决的,我下载了mysql-connector-odbc-5.2.6-win32,选择modify 安装
安装完,在C:\windows\system32\odbcad32.exe的驱动里发现不仅是之前的mysql驱动没了,而是根本就没有mysql的驱动,
打开C:\Windows\SysWOW64\odbcad32.exe,发现驱动中有了mysql驱动
配置好数据源mydsn32_mysql
使用代码
db = QSqlDatabase::addDatabase("QODBC");db.setDatabaseName("mydsn32_mysql");if(db.open()){
model = new QSqlQueryModel(this);model->setQuery("SELECT * FROM city");ui->tableView->setModel(model);}
else{
QMessageBox::warning(this, "warning", db.lastError().text());}
连接成功,读出表中的数据
对于System32 和SysWOW64
WoW64 (Windows 32-bits on Windows 64-bit)是一个Windows操作系统的子系统,能够运行32-bit应用程序,所有的64-bit的Windows系统都有,放的是32-bit应用程序文件;System32在64-bit的Windows系统中放的是64-bit应用程序文件。是不是觉得很奇怪呢?这是为了考虑兼容性。
(一下部分引用自http://blogs.msdn.com/b/tianlin/archive/2011/10/26/syswow64.aspx)
如果你写了一个很牛的32位的应用程序,现在,你想把它变成64位的应用程序,以更充分地利用64位处理器所带来的新的处理能力。你肯定觉得,这不就是让64位编译器编译一遍就完了的事儿么?可能你发现,这并不是骨感的现实。你突然发现,你的程序里,为了某些你已经想不起来的原因,把System32这个文件夹,写死在了你的程序里。而这个System32中的32,让你很不安。你尝试着运行了你的程序,却发现一切正常。为什么呢?因为这是Windows系统的另一个兼容性方面的努力:让一个已有的32位应用程序,不加修改或者尽可能少地加以修改,便可以被编译成64位应用程序并在64位Windows上运行。其实,把System32这样的路径,写死在程序里,并不是一个个案。所以,为了保证这些应用程序可以顺利地过渡到64位,Windows最后还是决定让64位的系统文件放在System32的文件夹下。而让32位的系统文件,搬到了SysWow64中去。
你肯定会想,那让32位搬到SysWow64中去以后,那些写死在32位应用程序中的System32怎么办?答:Windows会给他们转向到SysWow64中去。那让64位中的System32转向到System64不也是一样么?真的一样么?不一样么?真的一样么?不一样么?真的不一样。
作为64位Windows操作系统,当然是希望能充分发挥64位处理器的潜力,让应用程序更有效率地运行。如果在运行64位应用程序时,总要检查是否需要转向,势必影响程序运行效率。所以,不能给64位应用程序做没有必要的转向,如果说必须要转,那就只能转32位应用程序了。是的,没有办法,在64位操作系统中,32位应用程序要做一些小的牺牲。
此外,为了保证32位应用程序不与64位应用程序相冲突,除了System32文件夹外,注册表也需要为32位和64位提供两套,也需要让32位的应用程序在必要时重定向。
- win7 64bit 下mysql5.5.36(x86,64bit) ODBC qt5.2连接
- win7(64bit)下通过odbc连接oracle的解决方案
- 在window 64bit下使用ODBC 连接powerDesiger
- tdm在win7 x64下静态编译 QT5.5 64bit版本问题2
- 64bit windows 下使用32bit ODBC
- 64bit windows odbc
- Win7 64bit下配置MexOpenCV 2
- CentOS6.2(64bit)下mysql5.6.16主从同步配置
- tdm在win7 x64下静态编译 QT5.5 64bit版本问题1
- win7 64bit + vs2012 + Qt5.0.1 + CGAL4.1
- 环境配置:Qt5.5+VS2013+OpenCv3.1.0+Win7(64bit)
- win7 64bit下建立jdk环境
- win7 64bit下Python环境配置
- win7-64bit下安装Scipy
- Win7(64bit)下安装Docker
- win7(64bit)下pyspider的安装
- win7 64-bit minifilter
- theano win7 64bit
- adb devices连接不到设备的解决方式
- UVA 589 - Pushing Boxes(BFS+状态判重)
- VPN技术详解 L2TP VPN
- 数据结构之链表反转
- 一步一步教你做ios推送
- win7 64bit 下mysql5.5.36(x86,64bit) ODBC qt5.2连接
- 在XP下如何安装支持vs2008的visual assist插件
- Struts2笔记---开发环境的搭配
- VS2010安装EF5.0 EntityFramework
- 我们的天空 - BEYOND
- 微信推送文本信息
- Qt Model/View( 一)
- android Toast五种效果
- jQuery性能优化