Qt如何连接到Android OS中的现有SQLlite文件?

Vad*_*mcg 3 c++ database sqlite qt android

我正在尝试连接到我的qt 5.2项目(在Android OS中)中的现有SQLlite数据库文件.我应该在哪里保存此文件以使用此代码加载它:QSqlDatabase::addDatabase("myfile.sqlite");

Nej*_*jat 6

首先,您应该使用addDatabase添加数据库连接,驱动程序类型为QSQLITE,连接名称类似MyConnection.

QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE","MyConnection" );
Run Code Online (Sandbox Code Playgroud)

接下来,您应该设置连接的数据库名称并将其打开.

db.setDatabaseName( "myfile.sqlite" );
if( !db.open() )
{
    QMessageBox::warning(this, tr("Failed to connect!"), tr("Error connecting to database: ")+db.lastError().driverText() );
}
Run Code Online (Sandbox Code Playgroud)

在您的开发文件夹中,您将找到\ android\assets - 只需将SQLite数据库文件放入该文件夹并将其添加到.pro中:

deployment.files += myfile.sqlite
deployment.path = /assets
INSTALLS += deployment
Run Code Online (Sandbox Code Playgroud)

但是资产中的文件是只读的.所以你应该先将它复制到其他位置:

QFile dfile("assets:/myfile.sqlite");
if (dfile.exists())
{
     dfile.copy("./myfile.sqlite");
     QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}
Run Code Online (Sandbox Code Playgroud)

现在您可以连接到您的数据库,如上所述.