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. 数据库连接:
open
、close
: 打开和关闭数据库连接。isOpen
: 判断数据库连接是否处于打开状态。commitTransaction
、rollbackTransaction
: 提交和回滚事务。
3. 查询执行:
exec
: 执行 SQL 查询。lastError
: 获取最后一个错误。record
: 获取查询结果的字段信息。prepare
、bindValue
: 预处理和绑定参数。
4. 元数据查询:
record
、tables
、primaryIndex
: 获取数据库表的元数据信息。isIdentifierEscaped
、escapeIdentifier
: 判断和转义标识符(表名、字段名)。
5. 事务管理:
hasFeature(QSqlDriver::Transactions)
: 检查是否支持事务。commitTransaction
、rollbackTransaction
: 提交和回滚事务。
#include
提供了一个接口,供开发者能够连接到数据库,并执行sql查询以及管理数据库连接。
1. 数据库连接:
- 静态方法
addDatabase
: 用于添加一个数据库连接。 - 静态方法
removeDatabase
: 用于移除数据库连接。
2. 连接属性:
setHostName
、setDatabaseName
、setUserName
、setPassword
: 用于设置数据库连接的主机名、数据库名称、用户名和密码。setPort
: 设置数据库连接的端口。setConnectOptions
: 设置连接选项,比如设置字符集。
3. 连接状态:
isOpen
: 判断数据库连接是否处于打开状态。open
、close
: 分别用于打开和关闭数据库连接。
4. 错误处理:
lastError
: 获取最后一个数据库错误。isValid
: 判断数据库连接是否有效。
5. 查询执行:
exec
: 用于执行 SQL 查询。transaction
、commit
、rollback
: 用于事务管理。
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
: 移动到查询结果的上一行。first
、last
: 移动到查询结果的第一行和最后一行。seek
: 移动到查询结果的指定行。value
: 获取当前行指定字段的值。record
: 获取查询结果的字段信息。
4. 元数据查询:
record
: 获取查询结果的字段信息。size
: 获取查询结果的行数。
5. 事务支持:
isActive
: 判断查询是否处于活动状态(在事务中)。isValid
: 判断查询是否有效。
6. 批量操作:
execBatch
: 批量执行一组 SQL 查询。