•  1 #include  2 #include  3 #include  4 #include  5 #include  6 #include  7 int main(int argc, char *argv[]) 8 { 9     QCoreApplication a(argc, argv);10     QSqlDatabase DB;11     QString strDB = "D:/Source_Collection/Source_12_11/master_bulid/MainWindow/release/par/MasterDB.db";12 13     if(QSqlDatabase::contains("ParaRange"))14     {15         DB = QSqlDatabase::database("ParaRange");16     }17     else18     {19         DB = QSqlDatabase::addDatabase("SQLITECIPHER","ParaRange");20         DB.setDatabaseName(strDB);21         DB.setPassword("s7T2e5P2s0T0e4p");22     }23     if(!DB.open())24     {25         qDebug()<<"open datebase failed";26         qDebug()<<DB.lastError().text();//输出错误信息27         return {} ;28     }29 30 #if 1     //** 占位 */31     QString userProvidedAddress = "0x" + QString("c02e").toUpper();  // 这个值是用户提供的32     //QString userProvidedAddress = "0xC02E";33     // 创建 QSqlQuery 对象34     QSqlQuery query(DB);35 36     // 准备 SQL 查询语句,使用 :address 作为占位符37     QString sqlQuery = "SELECT PT_Max, PT_Min FROM Range WHERE PT_Address = :address";38     query.prepare(sqlQuery);39 40     // 绑定参数,将用户提供的地址值绑定到占位符上41     query.bindValue(":address", QVariant(userProvidedAddress));42     // 执行查询43     if (query.exec()) {44         // 处理查询结果45         while (query.next()) {46             double ptMax = query.value("PT_Max").toDouble();47             double ptMin = query.value("PT_Min").toDouble();48 49             qDebug() << "PT_Max:" << ptMax << "PT_Min:" << ptMin;50         }51     } else {52         // 查询执行失败53         qDebug() << "Query execution failed: " << query.lastError().text();54     }55     #else56     //* 直接写sql */57     address = QString("0x%1").arg(address.toUpper());58     QSqlQuery query("SELECT PT_Max, PT_Min FROM Range WHERE PT_Address = '" + address + "'",DB);59     while (query.next()){60         qDebug() << query.value(0).toDouble() << query.value(1).toDouble();61     }62 #endif63 64     return a.exec();65 }

#include

如名称,数据库驱动。

1. 驱动信息:

  • hasFeature: 检查驱动是否支持特定功能,如事务、批处理等。
  • isQuerySize: 驱动是否支持QSqlQuery::size函数。

2. 数据库连接:

  • openclose: 打开和关闭数据库连接。
  • isOpen: 判断数据库连接是否处于打开状态。
  • commitTransactionrollbackTransaction: 提交和回滚事务。

3. 查询执行:

  • exec: 执行 SQL 查询。
  • lastError: 获取最后一个错误。
  • record: 获取查询结果的字段信息。
  • preparebindValue: 预处理和绑定参数。

4. 元数据查询:

  • recordtablesprimaryIndex: 获取数据库表的元数据信息。
  • isIdentifierEscapedescapeIdentifier: 判断和转义标识符(表名、字段名)。

5. 事务管理:

  • hasFeature(QSqlDriver::Transactions): 检查是否支持事务。
  • commitTransactionrollbackTransaction: 提交和回滚事务。

#include

提供了一个接口,供开发者能够连接到数据库,并执行sql查询以及管理数据库连接。

1. 数据库连接:

  • 静态方法 addDatabase: 用于添加一个数据库连接。
  • 静态方法 removeDatabase: 用于移除数据库连接。

2. 连接属性:

  • setHostNamesetDatabaseNamesetUserNamesetPassword: 用于设置数据库连接的主机名、数据库名称、用户名和密码。
  • setPort: 设置数据库连接的端口。
  • setConnectOptions: 设置连接选项,比如设置字符集。

3. 连接状态:

  • isOpen: 判断数据库连接是否处于打开状态。
  • openclose: 分别用于打开和关闭数据库连接。

4. 错误处理:

  • lastError: 获取最后一个数据库错误。
  • isValid: 判断数据库连接是否有效。

5. 查询执行:

  • exec: 用于执行 SQL 查询。
  • transactioncommitrollback: 用于事务管理。

6. 驱动相关:

  • driver: 获取数据库连接所使用的驱动。
  • drivers: 获取可用的数据库驱动列表。

7. 信号和槽:

  • connectionNameChanged: 当连接名称改变时发出的信号。
  • commitDataRequest: 当应用程序请求提交数据时发出的信号。

#include <QSqlQuery>

Qt 框架中用于执行 SQL 查询的类,它封装了数据库查询的操作,并提供了一系列方法来处理查询结果。

QSqlQuery 对象通过 QSqlDatabase 对象创建,它用于执行 SQL 语句并处理查询结果。

1. 执行 SQL 查询:

  • exec: 执行 SQL 查询语句。

2. 参数绑定:

  • bindValue: 绑定值到 SQL 查询中的参数。
  • addBindValue: 添加一个绑定值到 SQL 查询中。

3. 查询结果处理:

  • next: 移动到查询结果的下一行。
  • previous: 移动到查询结果的上一行。
  • firstlast: 移动到查询结果的第一行和最后一行。
  • seek: 移动到查询结果的指定行。
  • value: 获取当前行指定字段的值。
  • record: 获取查询结果的字段信息。

4. 元数据查询:

  • record: 获取查询结果的字段信息。
  • size: 获取查询结果的行数。

5. 事务支持:

  • isActive: 判断查询是否处于活动状态(在事务中)。
  • isValid: 判断查询是否有效。

6. 批量操作:

  • execBatch: 批量执行一组 SQL 查询。