QT-sql操作(sqlite数据库文件)

 

  •  1 #include <QCoreApplication>
     2 #include <QSqlDriver>
     3 #include <QSqlDatabase>
     4 #include <QSqlQuery>
     5 #include <QDebug>
     6 #include <QSqlError>
     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     else
    18     {
    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     #else
    56     //* 直接写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 #endif
    63 
    64     return a.exec();
    65 }

     

#include <SqlDriver>

如名称,数据库驱动。

1. 驱动信息:

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

2. 数据库连接:

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

3. 查询执行:

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

4. 元数据查询:

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

5. 事务管理:

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

 

#include <QsqlDataBase> 

提供了一个接口,供开发者能够连接到数据库,并执行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 查询。
posted @ 2023-12-18 13:58  xcn-xcn  阅读(186)  评论(0编辑  收藏  举报