未声明'QSqlDatabase'

时间:2009-11-15 23:18:58

标签: sql qt4

我很擅长使用QT4。我试图在已经运行的应用程序中使用sql。但是,当我尝试编译时,我收到此错误: “'QSqlDatabase'未在此范围内声明。”

以下是相关代码:

#include <QtSql>
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

 db.setHostName("bigblue");
 db.setDatabaseName("flightdb");
 db.setUserName("acarlson");
 db.setPassword("1uTbSbAs");
 bool ok = db.open();

我已将QT + = sql添加到我的.pro文件中。

上面的代码从字面上复制过来:http://qt.nokia.com/doc/4.5/qtsql.html

知道我做错了吗?

3 个答案:

答案 0 :(得分:5)

好的,问题出在我的.pro文件中。这是给我错误的文件:

TEMPLATE = app
QT += sql
QT = gui core
CONFIG += qt debug warn_on console
DESTDIR = bin
OBJECTS_DIR = build
MOC_DIR = build
UI_DIR = build
FORMS = ui/mainwindow.ui ui/dialog.ui ui/dialog_con.ui ui/add_ingredient.ui
HEADERS = src/mainwindowimpl.h \
src/dialogimpl.h \
src/utils.h \
SOURCES = src/mainwindowimpl.cpp \
src/main.cpp \
src/dialogimpl.cpp \
src/utils.cpp \

问题是QT = gui核心覆盖了我的QT + = sql。通过将QT + = sql移动到HEADERS上方的bo,它编译得很好。谢谢你的帮助。

答案 1 :(得分:2)

编译器找不到QtSql标头,因此不了解QSqlDatabase。标头位于QtSql子目录中,因此您可能需要在包含行中明确指定:

#include <QtSql/QtSql>

或者,您必须确保QtSql目录位于编译器的包含文件搜索路径中。

答案 2 :(得分:-1)

我认为你只需要一个

#include <QSqlDatabase>

因为QtSql不会自动包含此内容。