Qt 访问mysql

本人是新手,正在学习访问Qt访问Mysql我参考的是C++GUIQt4编程(第二版)中文版的我的代码如下:#include<QtCore/QCoreApplication... 本人是新手,正在学习访问Qt访问Mysql
我参考的是C++ GUI Qt4编程(第二版)中文版的
我的代码如下:
#include <QtCore/QCoreApplication>
#include <QtSql/qsqldatabase.h>
#include <QtGui/qmessagebox.h>
#include <QtSql/qsqlerror.h>
#include <QtSql/qsqlquery.h>
#include <qvariant.h>
#include <QtSql/QMYSQLDriver>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("123");
db.open();

QSqlQuery query(db);
query.exec("SELECT name FROM users");
while(query.next()){
QString name = query.value(0).toString();
qDebug(qPrintable(name));
}

return a.exec();
}

报的异常,说是找不到mysql.h文件,这个Qt的安装程序没有给吧?在哪弄呢?

qsql_mysql.h文件中的内容要修改吗?我的没有修改

#ifndef QSQL_MYSQL_H
#define QSQL_MYSQL_H

#include <QtSql/qsqldriver.h>
#include <QtSql/qsqlresult.h>

#if defined (Q_OS_WIN32)
#include <QtCore/qt_windows.h>
#endif

#include <mysql.h> 这个文件找不到

#ifdef QT_PLUGIN
#define Q_EXPORT_SQLDRIVER_MYSQL
#else
#define Q_EXPORT_SQLDRIVER_MYSQL Q_SQL_EXPORT
#endif

class Q_EXPORT_SQLDRIVER_MYSQL QMYSQLDriver : public QSqlDriver
{
Q_OBJECT
friend class QMYSQLResult;
public:
explicit QMYSQLDriver(QObject *parent=0);
explicit QMYSQLDriver(MYSQL *con, QObject * parent=0);这个MYSQL类是哪定义的?
~QMYSQLDriver();
bool hasFeature(DriverFeature f) const;
bool open(const QString & db,
const QString & user,
const QString & password,
const QString & host,
int port,
const QString& connOpts);
void close();
QSqlResult *createResult() const;
QStringList tables(QSql::TableType) const;
QSqlIndex primaryIndex(const QString& tablename) const;
QSqlRecord record(const QString& tablename) const;
QString formatValue(const QSqlField &field,
bool trimStrings) const;
QVariant handle() const;
QString escapeIdentifier(const QString &identifier, IdentifierType type) const;

protected Q_SLOTS:
bool isIdentifierEscapedImplementation(const QString &identifier, IdentifierType type) const;

protected:
bool beginTransaction();
bool commitTransaction();
bool rollbackTransaction();
private:
void init();
QMYSQLDriverPrivate* d;
};

如果回答好了,我可以提高到150分噢,希望高手帮忙解答
因为我没有编译mysql驱动,具体怎么编译,去网上搜下吧,就是qt mysql驱动,有很多例子。
至于mysql.h文件,要安装mysql的complete版本,就会有了。
在mysql\include文件夹下
展开
 我来答
实验级别
推荐于2016-04-21 · 超过10用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:29.9万
展开全部
按照这三点顺序:
1.#include <QtSql/QMYSQLDriver>去掉
然后重新运行程序
根据提示
2.如果找不到QMYSQL驱动,那么你需要先编译这个驱动。先到Plugins/SqlDriver下看看有没有qsqlmysql.*与qsqlmysqld.*的动态库文件。
如果没有,说明你没有编译mysql驱动插件。如果有但是连不上驱动,说明你的动态库没有放在程序的目录下(实质是没有放在程序可搜索的目录里),把这些动态库放在程序目录,不要少mysql的动态库(这个不是QT编译的那个QSQLMSQL的那个,是MYSQL自己的都太库)。

3.编译mysql驱动插件。
打开你的QT助手(Qt Assistant),查找这个“SQL Database Drivers”。里面有编译的方法。
注意了这个编译需要你提供MySql的头文件和库文件。你说的mysql.h即mysql的头文件了。如果你没有,去下载MYSQL的SDK。
cycloneii
2010-08-19 · 超过14用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:40.8万
展开全部
mysql.h确实不是qt的一部分,它是mysql的一部分,你应该是用qt的二进制安装包安装的,不是从源码编译的吧。在linux下你需要安装libmysqlclient,在windows下你安装mysql时就包含了这个文件,你需要的是在gcc的编译参数中增加"-I<mysql.h所在目录>",如果是qt,那么在。pro未见中增加一行INCLUDEPATH += <mysql.h所在目录>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
诸葛屠夫1982
2010-08-18 · 超过36用户采纳过TA的回答
知道答主
回答量:148
采纳率:0%
帮助的人:111万
展开全部
把连接字符串拿出来单独测一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式