本文目录一览:
- qt连接mysql数据库怎么编译驱动
- QT访问MYSQL数据库为什么一打开子窗口访问数据库就出问题?
- Qt5.7下连接mysql数据库
- QT访问MYSQL数据库为什么一打开子窗口访问数据库就出问题
- Qt mysql, 程序运行时打开数据库不成功
- qt中mysql怎么连接远程数据库
qt连接mysql数据库怎么编译驱动
下载mysql C链接库 选择C的链接库 2 将C的连接库解压到到C:/mysql 目录下 3 我的QT 安装在C盘目录下,版本号是4.8.6 所以打开目录
C:\QT\4.8.6\src\plugins\sqldrivers\mysql
4
将 C:/mysql/lib/libmysql.dll
和 C:/mysql/lib/libmysql.lib
复制到此处。
5
编辑目录下的mysql.pro文件,添加:
INCLUDEPATH += "C:/mysql/include"
LIBS += "C:/mysql/lib/opt/libmysql.lib"
运行qt的控制台窗口,方便使用qmake 切换到目录下:
C:\QT\4.8.6\src\plugins\sqldrivers\mysql
执行 qmake
运行VS2010的控制台工具
切换到:
C:\QT\4.8.6\src\plugins\sqldrivers\mysql
执行 nmake
和 nmake release
是 nmake
不是 make
这样在 C:\QT\4.8.6\src\plugins\sqldrivers\mysql
目录下的 debug
和 release
目录下分别会产生:
qsqlmysqld4.dll
、qsqlmysqld4.lib
qsqlmysql4.dll
、qsqlmysql4.lib
将上面提到的四个文件复制到:
C:\QT\4.8.6\plugins\sqldrivers
最后把:
C:\mysql\lib\opt\libmysql.dll
C:\mysql\lib\opt\libmysql.lib
复制到:
C:\Windows\system32\
最后测试mysql是否可以在qt中正常使用。 新建一个qt控制台项目,输入以下代码:
#include <QCoreApplication>
#include <QDebug>
#include <QString>
#include <QStringList>
#include <QSql>
#include <QSqlDatabase>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
qDebug() << drivers;
return a.exec();
}
运行测试一下,看看有没有图片中红圈圈中的两项内容
QT访问MYSQL数据库为什么一打开子窗口访问数据库就出问题?
40℃。 苹果手机安全使用范围:
- 尽量在0摄氏度至35摄氏度之间的环境温度内使用iPhone。
- 低温或高温环境可能会暂时缩短电池寿命或导致设备暂时停止正常工作。
- 冬天尽量避免在室外长时间使用iPhone。
- 夏天在长时间使用iPhone时,尽量不要加装保护壳,让iPhone尽可能的散热。
Qt5.7下连接mysql数据库
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
这里需要把 libmysql.dll
文件拷贝到Qt的bin目录中。或者自己编译的时候,链接静态库。
参考:
- 参考:
QT访问MYSQL数据库为什么一打开子窗口访问数据库就出问题
意思是说,还有某查询引用默认数据库连接 "qt_sql_default_connection"
。
如果忽略该警告,Qt官方文档里也写了,可能会出现内存泄漏:
Warning: There should be no open queries on the database connection when this function is called, otherwise a resource leak will occur. 还是不出现这个警告的好。怎么把它弄没了呢?我把一切外围的对象都排除了:仅建立一个连接,打开它,然后关闭连接,调用
removeDatabase()
。居然还有警告! 问题已经锁定在我关闭连接的语句上:
QSqlDatabase::removeDatabase(QSqlDatabase::database().connectionName());
默认连接的名字也是默认的,需要通过 connectionName()
函数获得。这样写貌似没什么问题,后来调试发现,QSqlDatabase::database()
静态函数实际上使默认连接的引用计数+1。上述句子相当于:
QSqlDatabase db = QSqlDatabase::database(); // 获得实例
QString name = db.connectionName(); // 获得默认连接名
QSqlDatabase::removeDatabase(name); // 删除默认连接
这样,问题就清晰了,db
获得了引用,此时引用计数为2。在调用 removeDatabase()
时,db
对象并没有被删除,默认连接的引用计数仍为2,于是报告警告信息。
我们只需将其改为:
QString name;
{
name = QSqlDatabase::database().connectionName(); // 超出作用域后,隐含对象被删除
}
QSqlDatabase::removeDatabase(name);
问题就解决了! 如果直接打默认连接名的话,代码就简单多了,不过名字不太好打(再说了,万一Qt把默认连接名改了呢!):
QSqlDatabase::removeDatabase("qt_sql_default_connection"); // 不推荐
Qt mysql, 程序运行时打开数据库不成功
你机器上有MySQL的驱动吗?如果你用Windows平台,编译器不带MySQL驱动的,要你自己编译。
qt中mysql怎么连接远程数据库
创建数据库:
- 选择开始菜单中 → 程序 → 【Management SQL Server 2008】→ 【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。
- 在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点。
- 右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。
- 执行上述操作后,会弹出【新建数据库】对话框。在对话框左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置后,就完成了数据库的创建工作。
- 在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
- 在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。
- 在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。
- 切换到【选项页】,在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
- 切换到【文件组】页,在这里可以添加或删除文件组。
- 完成以上操作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。