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文件夹下 展开
我参考的是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文件夹下 展开
展开全部
按照这三点顺序:
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。
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。
展开全部
mysql.h确实不是qt的一部分,它是mysql的一部分,你应该是用qt的二进制安装包安装的,不是从源码编译的吧。在linux下你需要安装libmysqlclient,在windows下你安装mysql时就包含了这个文件,你需要的是在gcc的编译参数中增加"-I<mysql.h所在目录>",如果是qt,那么在。pro未见中增加一行INCLUDEPATH += <mysql.h所在目录>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把连接字符串拿出来单独测一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询