C++ Qt中的嵌入式数据库
我有一个用于Qt应用程序的SQLite数据库。我假设将数据库添加为资源是合乎逻辑的 我无法使用嵌入式资源编译我的应用程序 连接.hC++ Qt中的嵌入式数据库,c++,qt,sqlite,embedded-resource,C++,Qt,Sqlite,Embedded Resource,我有一个用于Qt应用程序的SQLite数据库。我假设将数据库添加为资源是合乎逻辑的 我无法使用嵌入式资源编译我的应用程序 连接.h #ifndef CONNECTION_H #define CONNECTION_H #include <QMessageBox> #include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery> static bool createConnectio
#ifndef CONNECTION_H
#define CONNECTION_H
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":/data/ShippingData.db3");
if (!db.open())
{
QMessageBox::critical(0, QObject::tr("Database Error"), db.lastError().text());
return false;
}
return true;
}
#endif // CONNECTION_H
生成问题(来自Qt创建者)
我试图更改我的资源布局,因为它来自消息“编译器未进入数据库所在的数据/文件夹”。我得到了与此资源文件完全相同的构建问题
<RCC>
<qresource>
<file>data/ShippingData.db3</file>
</qresource>
</RCC>
即使您解决了编译问题,在qrc文件中嵌入sqlite数据库也不会起作用。例如,请参见或上的讨论。最好的解决方案是在qrc文件中包含一个数据库转储,创建一个内存sqlite db,并从资源中的SQL语句重建数据库。似乎删除或重命名了数据库文件Shipping.db3,并添加了ShippingData.db3。若要解决此生成问题,应删除生成文件夹并重新生成项目。这将解决您的构建问题
您可以在此处阅读数据库部署说明:我至少知道如何在Mac OSX上执行此操作,其中QMAKE_BUNDLE_数据参数起作用。对于Windows,请查看
mac{
Resources.files=数据
Resources.path=Contents/MacOS
QMAKE_BUNDLE_DATA+=资源
}
db.setDatabaseName(QCoreApplication::applicationDirPath().append("/data/custom.db"));
你能把你的.pro文件也贴出来吗?这将有助于理解。谢谢。另外,您的assets.qrc文件在项目树中的位置?我添加了.pro文件,谢谢您的帮助发布.pro内容是否回答了您的第二个问题?在实际目录assets.qrc中,它位于项目文件夹的根目录下。(即与.qrc位于同一文件夹中的.cpp、.h和.ui文件)
No rule to make target `../TimePlotter/Shipping.db3', needed by `debug/qrc_assets.cpp'. Stop.
<RCC>
<qresource>
<file>data/ShippingData.db3</file>
</qresource>
</RCC>
#-------------------------------------------------
#
# Project created by QtCreator 2010-11-21T03:18:17
#
#-------------------------------------------------
QT += core gui
TARGET = TimePlotter
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
time.cpp \
clients.cpp \
printTime.cpp
HEADERS += mainwindow.h \
time.h \
clients.h \
printTime.h \
connection.h
FORMS += mainwindow.ui \
time.ui \
clients.ui \
printTime.ui
RESOURCES += \
assets.qrc
db.setDatabaseName(QCoreApplication::applicationDirPath().append("/data/custom.db"));