qt操作sqlite
时间: 2023-11-24 20:07:20 浏览: 56
SQLite是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite(Qt自带驱动)。在Qt中操作SQLite需要引入SQL模块,在Qt项目文件(.pro文件)中,加入SQL模块:QT += sql。在需要使用SQL的类定义中,引用相关头文件,例如:#include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery>。建立数据库可以使用QSqlDatabase类,使用QSqlQuery类执行SQL语句。在执行SQL语句时,成功执行的SQL语句将查询的状态设置为活动状态,以便isActive()返回true。否则,查询的状态将设置为非活动状态。在任何一种情况下,执行新的SQL语句时,查询都位于无效记录上。必须先将活动查询导航到有效记录(以便isActive()返回true),然后才能检索值。具体操作可以参考以下代码:
//建立数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydatabase.db");
if (!db.open()) {
qDebug() << "Failed to connect to database.";
return;
}
//创建表
const QString sql=R"( CREATE TABLE IF NOT EXISTS my_table ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name CHAR (50) UNIQUE NOT NULL, age INTEGER );)";
QSqlQuery query;
if(query.exec(sql)){
qDebug()<<"init table success";
}else{
qDebug()<<"init table error"<<query.lastError();
}
//插入数据
QString name = "Tom";
int age = 20;
QString insertSql = QString("INSERT INTO my_table (name, age) VALUES ('%1', %2)").arg(name).arg(age);
if(query.exec(insertSql)){
qDebug()<<"insert data success";
}else{
qDebug()<<"insert data error"<<query.lastError();
}
//查询数据
QString selectSql = "SELECT * FROM my_table";
if(query.exec(selectSql)){
while(query.next()){
int id = query.value(0).toInt();
QString name = query.value(1).toString();
int age = query.value(2).toInt();
qDebug()<<id<<name<<age;
}
}else{
qDebug()<<"select data error"<<query.lastError();
}
阅读全文
相关推荐













