我有有效的代码:
QSqlDatabase db;
QSqlQuery query;
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(directory + QDir::separator() + "db.sqlite3");
db.open();
query.exec("create table mytable (id integer)");
但是,如果我尝试通过将第 3 行更改为来命名添加的数据库:
db = QSqlDatabase::addDatabase("QSQLITE", "db");
我收到"驱动程序未加载驱动程序未加载"错误。我尝试将SQL语句编辑为以下所有内容,但似乎没有任何效果。
query.exec("create table db.mytable (id integer)");
query.exec("create table `db`.mytable (id integer)");
query.exec("create table 'db'.mytable (id integer)");
如何查询连接中的特定数据库?我可以找到很多默认数据库的示例,但没有命名数据库的示例。
我找到了~a~解决方案,即将查询绑定到数据库对象。这对我来说似乎仍然没有完全意义,尽管根据文档,QSqlDatabase 对象可以通过 addDatabase() 与多个数据库相关联。
看来我可以有两个不同的 QSqlDatabase 对象,每个对象都连接到不同的命名数据库。然后,当我创建 QSqlQuery 时,我将其绑定到要使用的数据库对象。所以代码变成:
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QSQLITE", "db");
db.setDatabaseName(directory + QDir::separator() + "db.sqlite3");
db.open();
QSqlQuery query(db);
query.exec("create table mytable (id integer)");