QT开发中文网

Qt中把数据存放到SQLlite 对应的表中

在Qt中,可以使用QSqlDatabase和QSqlQuery等类来连接SQLite数据库,并执行SQL语句来操作数据。下面是一个简单的示例,演示如何将数据存储到SQLite数据库中:

  1. 在Qt项目中添加sqlite驱动

首先需要确保在Qt项目中已经添加了SQLite驱动库,否则无法连接SQLite数据库。可以在.pro文件中添加以下代码:

QT += sql
  1. 连接到SQLite数据库

使用QSqlDatabase类连接到SQLite数据库并打开连接:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydatabase.db");
if (!db.open()) {
    qDebug() << "Cannot open database: " << db.lastError().text();
    return;
}

其中,setDatabaseName()方法指定要打开的SQLite数据库文件名。

  1. 创建表格

可以使用QSqlQuery类执行CREATE TABLE语句创建一个新表格:

QString createTable = "CREATE TABLE mytable ("
                      "id INTEGER PRIMARY KEY AUTOINCREMENT,"
                      "name TEXT,"
                      "age INTEGER)";
if (!query.exec(createTable)) {
    qDebug() << query.lastError().text();
    return;
}

上述代码将创建一个名为mytable的表格,包含三个字段:id、name和age。

  1. 插入数据

使用INSERT INTO语句向表格中插入数据:

QString name = "Tom";
int age = 20;
QString insertData = QString("INSERT INTO mytable(name, age) VALUES('%1', %2)").arg(name).arg(age);
if (!query.exec(insertData)) {
    qDebug() << query.lastError().text();
    return;
}

上述代码将向mytable表格中插入一条记录,包含name和age两个字段。

  1. 查询数据

使用SELECT语句从表格中查询数据:

QString selectData = "SELECT * FROM mytable";
if (!query.exec(selectData)) {
    qDebug() << query.lastError().text();
    return;
}

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;
}

上述代码将查询mytable表格中所有的记录,并打印每条记录的id、name和age字段。

完整示例代码如下:

#include <QCoreApplication>
#include <QtSql>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // Connect to SQLite database
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("mydatabase.db");
    if (!db.open()) {
        qDebug() << "Cannot open database: " << db.lastError().text();
        return -1;
    }

   // Create table
   QSqlQuery query(db);
   QString createTable = "CREATE TABLE mytable ("
                         "id INTEGER PRIMARY KEY AUTOINCREMENT,"
                         "name TEXT,"
                         "age INTEGER)";
   if (!query.exec(createTable)) {
       qDebug() << query.lastError().text();
       return -1;
   }

   // Insert data
   QString name = "Tom";
   int age = 20;
   QString insertData = QString("INSERT INTO mytable(name, age) VALUES('%1', %2)").arg(name).arg(age);
   if (!query.exec(insertData)) {
       qDebug() << query.lastError().text();
       return -1;
   }

   // Select data
   QString selectData = "SELECT * FROM mytable";
   if (!query.exec(selectData)) {
       qDebug() << query.lastError().text();
       return -1;
   }

   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;
    }

    return a.exec();
}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1794

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?