qtsql/qsqldatabase

请忽略大小写,文件分了大小写,这里没分

请问一下,如果我在pro里面添加了
qt+=sql
还需要在qsqldatabase前面加qtsql/么

  • 建议你看下这篇博客👉 :QSqlDatabase 同一个连接只能在创建它的线程中使用,为何还可以用数据库连接池?
  • 除此之外, 这篇博客: QSqlDatabase二三事中的 事务操作 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 提供了三个函数分别进行开启事务、提交、回滚操作:

        // 可以判断该驱动程序是否支持事务,SQLite和MySQL的是支持的
        //if(db.driver()->hasFeature(QSqlDriver::Transactions)){}
        db.transaction(); //开启事务
        //开启事务后进行增删改操作
        db.commit(); //提交
        db.rollback(); //回滚
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的信息,"qtsql" 是 Qt 中提供的数据库模块的名称,它可以用于连接不同类型的数据库,比如 MySQL、SQLite 等。而 "QSqlDatabase" 是 Qt 提供的用于操作数据库的类。

    在使用 "QSqlDatabase" 类的时候,需要先使用 "QSqlDatabase::addDatabase()" 方法创建一个数据库连接对象,然后可以通过该对象的成员方法来控制数据库的操作,比如执行 SQL 查询、开启事务等。因此,在使用 "QSqlDatabase" 类的时候,是不需要在对象名前添加 "qtsql/" 前缀的。

    下面是一个示例代码,展示如何创建一个 SQLite 数据库连接对象并执行查询操作:

    #include <QtSql>
    
    // 创建数据库连接对象
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("example.db");
    db.open();
    
    // 执行 SQL 查询
    QSqlQuery query;
    query.exec("SELECT id, name FROM employee");
    
    // 遍历查询结果
    while (query.next()) {
        int id = query.value(0).toInt();
        QString name = query.value(1).toString();
    
        qDebug() << "ID:" << id << ", Name:" << name;
    }
    
    // 关闭数据库连接
    db.close();
    

    根据以上示例,可以清楚地看到,在创建数据库连接对象的时候,只需要指定数据库类型名("QSQLITE")即可,没有必要添加 "qtsql/" 前缀。