【问题标题】:How do I query a named database within a connected QSqlDatabase?如何在连接的 QSqlDatabase 中查询命名数据库?
【发布时间】:2018-01-16 18:47:26
【问题描述】:

我有有效的代码:

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)");

如何查询连接中的特定数据库?我可以找到很多默认数据库的示例,但没有找到命名数据库的示例。

【问题讨论】:

    标签: qsqlquery qsqldatabase


    【解决方案1】:

    我找到了~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)");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2018-05-15
      相关资源
      最近更新 更多