QT 与 MySQL 连接的问题

mituzhishi 2005-05-17 02:36:00
connection.h:

#ifndef CONNECTION_H
#define CONNECTION_H

#include <qsqldatabase.h>

inline bool createOneConnection()
{
QSqlDatabase *db;
db = QSqlDatabase::addDatabase("QMYSQL3");
db->setHostName("127.0.0.1");
db->setDatabaseName("qttest");
db->setUserName("root");
if (!db->open()) {
db->lastError().showMessage();
return false; }
return false;
}
return true;
}

#endif



main.cpp:

#include <qapplication.h>
#include <qsqldatabase.h>

#include "connection.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
if (createOneConnection())
return 1;

QSqlQuery query;
query.exec("CREATE TABLE artist ("
"id INTEGER PRIMARY KEY, "
"name VARCHAR(40) NOT NULL, "
"country VARCHAR(40))");
query.exec("CREATE TABLE cd ("
"id INTEGER PRIMARY KEY, "
"artistid INTEGER NOT NULL, "
"title VARCHAR(40) NOT NULL, "
"year INTEGER NOT NULL)");
query.exec("CREATE TABLE track ("
"id INTEGER PRIMARY KEY, "
"cdid INTEGER NOT NULL, "
"number INTEGER NOT NULL, "
"title VARCHAR(40) NOT NULL, "
"duration INTEGER NOT NULL)");

#if 1
query.exec("INSERT INTO artist "
"VALUES (1001, 'Gluecifer', 'Norway')");
query.exec("INSERT INTO artist "
"VALUES (1002, 'The Sounds', 'Sweden')");
query.exec("INSERT INTO artist "
"VALUES (1003, 'Melvins', 'USA')");
query.exec("INSERT INTO artist "
"VALUES (1004, 'Strapping Young Lads', 'Canada')");
query.exec("INSERT INTO cd "
"VALUES (2001, 1001, 'Riding the Tiger', 1997)");
query.exec("INSERT INTO cd "
"VALUES (2002, 1001, 'Easy Living', 2002)");
query.exec("INSERT INTO cd "
"VALUES (2003, 1002, 'Living in America', 2002)");
query.exec("INSERT INTO cd "
"VALUES (2004, 1003, 'Bullhead', 1991)");
query.exec("INSERT INTO cd "
"VALUES (2005, 1003, 'Stag', 1996)");
query.exec("INSERT INTO cd "
"VALUES (2006, 1003, 'Hostile Ambient Takeover', "
"2002)");
query.exec("INSERT INTO cd "
"VALUES (2007, 1003, '26 Songs', 2003)");
query.exec("INSERT INTO cd "
"VALUES (2008, 1004, 'City', 1997)");
query.exec("INSERT INTO cd "
"VALUES (2009, 1004, 'No Sleep Till Bedtime', "
"1998)");
query.exec("INSERT INTO cd "
"VALUES (2010, 1004, 'Syl', 2003)");
query.exec("INSERT INTO track "
"VALUES (3001, 2004, 01, 'Boris', 514)");
query.exec("INSERT INTO track "
"VALUES (3002, 2004, 02, 'Anaconda', 143)");
query.exec("INSERT INTO track "
"VALUES (3003, 2004, 03, 'Ligature', 229)");
query.exec("INSERT INTO track "
"VALUES (3004, 2004, 04, 'It''s Shoved', 155)");
query.exec("INSERT INTO track "
"VALUES (3005, 2004, 05, 'Zodiac', 254)");
query.exec("INSERT INTO track "
"VALUES (3006, 2004, 06, 'If I Had An Exorcism', "
"187)");
query.exec("INSERT INTO track "
"VALUES (3007, 2004, 07, 'Your Blessed', 339)");
query.exec("INSERT INTO track "
"VALUES (3008, 2004, 08, 'Cow', 271)");
#endif

return 0;
}



运行时弹出对话框:Driver not loaded Driver not loaded.

实在不知道是什么原因。

为什么QT与MySQl连不上呢?

在网上看到很多人问这个问题,可是没人答得出来,

还望高手不吝赐教.
...全文
388 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
老猪 2005-05-24
  • 打赏
  • 举报
回复
嘿 ,哥们,你的QT是花了银子了的吗?windows下的要钱才能用哈!!
HOHO,那你就更不能放弃了!

可不可以 给我份拷贝呢,我也感受下windows下的QT,试试那个QMYSQL3的问题!
老猪 2005-05-24
  • 打赏
  • 举报
回复
嘿 ,哥们,你的QT是花了银子了的吗?windows下的要钱才能用哈!!
HOHO,那你就更不能放弃了!

可不可以 给我份拷贝呢,我也感受下windows下的QT,试试那个QMYSQL3的问题!
老猪 2005-05-23
  • 打赏
  • 举报
回复
哥们,别灰心嘛!
mituzhishi 2005-05-20
  • 打赏
  • 举报
回复
libmysql.lib这个有,我在电脑上能看到.

算了吧,哥们我不打算搞QT了,会的人太少,找不到技术支持
lsrj 2005-05-20
  • 打赏
  • 举报
回复
xuexi
老猪 2005-05-19
  • 打赏
  • 举报
回复
libmysql.lib
这个你有吗?
然后还需要mysql的头文件,我的linux下的QT编译是成功了的!
mituzhishi 2005-05-19
  • 打赏
  • 举报
回复
我用的是mysql,

可是我找不到mysql的驱动,

我在控制台biuld那个驱动的plugin时报错:

我是这样做的:
cd %QTDIR%\plugins\src\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake


报错:LINK : fatal error LNK1181: cannot open input file "libmysql.lib"
老猪 2005-05-18
  • 打赏
  • 举报
回复
windows环境我就不太清楚了,在linux下,编译好的mysql的模块会在$QTDIR/plugins/sqldrivers下有个libqsqlmysql.so
我想windows下也应该有个类似的模块文件吧?
如果安装好了,在QT 开发界面的Project-->database connections--->new 然后选择driver可以看到QMYSQL3的.

请问,你的编译通过了哈??
mituzhishi 2005-05-18
  • 打赏
  • 举报
回复
楼上的哥们,我是用的windows,

我按QT的帮助文档安装了一下:
How to build the plugin on Windows
You need to get the MySQL installation files. Run SETUP.EXE and choose "Custom Install". Install the "Libs & Include Files" Module. Build the plugin as follows (here it is assumed that MySQL is installed in C:\MYSQL):


cd %QTDIR%\plugins\src\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C:\MYSQL\LIB\OPT\LIBMYSQL.LIB" mysql.pro
nmake

If you are not using a Microsoft compiler, replace nmake with make in the statement above.



可是问题并未解决,依旧是开始的那个问题 :Driver not loaded Driver not loaded.
老猪 2005-05-18
  • 打赏
  • 举报
回复
如果你是从光盘安装的,在哪张碟子我不记得了,反正里面有的,名字好像是qt-xx的!
如果从从源代码安装,QT的帮助文档里面有安装方法:
How to build the plugin on Unix/Linux
You need the MySQL header files and as well as the shared library libmysqlclient.so. Depending on your Linux distribution you need to install a package which is usually called "mysql-devel".
Tell qmake where to find the MySQL header files and shared libraries (here it is assumed that MySQL is installed in /usr/local) and run make:
cd $QTDIR/plugins/src/sqldrivers/mysql
qmake -o Makefile "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib" mysql.pro
make

这个有点文体,就是连接的时候要加上-lmysqlclient,否则调试程序要出错,你可以试试把第二步改成:
qmake -o Makefile "INCLUDEPATH+=/usr/local/include" "LIB+=-L/usr/local/lib -lmysqlclient" mysql.pro


mituzhishi 2005-05-18
  • 打赏
  • 举报
回复
谁有经验?

帮一下忙吧。
老猪 2005-05-18
  • 打赏
  • 举报
回复
没有编译起那个mysql模块?
那..................我也不晓得了!
mysql自带的有一套C API,用这个如何呢?
mituzhishi 2005-05-18
  • 打赏
  • 举报
回复
什么编译?

我在命令行搞得上述内容,反正没有报错,

应该是成功了。

在QT 开发界面的Project-->database connections--->new

然后选择driver看不到QMYSQL3 !
mituzhishi 2005-05-17
  • 打赏
  • 举报
回复
楼上的哥们,
我果然没有装驱动,
请问到哪去下载呢,
怎么装?
老猪 2005-05-17
  • 打赏
  • 举报
回复
你看看有没有安装QMYSQL3 这个QT下mysql驱动
可疑在QT开发环境的"Project"-->"Database connections"-->new 然后选择看看
sharkhuang 2005-05-17
  • 打赏
  • 举报
回复
没做过!跟踪进去哪错了?

23,127

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧