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. 数据库连接:
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 <QsqlDataBase>
提供了一个接口,供开发者能够连接到数据库,并执行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 查询。