Qt5.2应用SQLite小结

来源:互联网 发布:ubuntu锐捷认证失败 编辑:程序博客网 时间:2024/06/18 13:44

  • 引言
  • 使用环境
  • 数据库操作
    • 初始化数据库
    • SQL语句使用
    • QSqlTableModel的使用
  • 小结
  • 参考

引言

SQLite是一款轻型的数据库,占用资源少,且 QT 内置有 SQLite 数据库模块,无须手动编译驱动,十分适合轻量应用中使用。
为了熟悉Qt对SQLite基本操作方法,基于小项目比较容易理解,于是实现了一个简单的通讯录应用,包括增删改查功能。
环境:Qt5.2+QtCreator

使用环境

  1. pro文件中添加: QT+=sql
  2. 添加头文件
#include <QSqlDatabase>#include <QSqlQuery>#include <QSqlTableModel>//如需使用QSqlTableModel

数据库操作

1.初始化数据库:

添加数据库驱动、设置数据库名称、打开数据库、创建表

void MainWindow::initDB(){    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");    //db.setHostName("localhost");//设置主机名    db.setDatabaseName("AddressBook.db");    //db.setUserName("root");   // 如果是 SQLite 不需要    //db.setPassword("root");   // 如果是 SQLite 不需要    bool ok = db.open();    if(ok)    {        qDebug()<<"Create DB";        QSqlQuery query;        query.exec("create table FriendManager (create_date datetime, "                   "id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(20) ,phone varchar(20), "                   "email varchar(20) , address varchar(20) , description varchar(50))");    }    else    {        qDebug()<<"open failed"<<db.databaseName();    }}

2.SQL语句使用

void MainWindow::ExecAddSql(QVariantMap stuInfo){    if(m_operateType == Add)    {        QString create_date = stuInfo.value("datetime").toString();        QString phone = stuInfo.value("phone").toString();        QString name = stuInfo.value("name").toString();        QString email = stuInfo.value("email").toString();        QString address = stuInfo.value("address").toString();        QString description = stuInfo.value("desc").toString();        QString sql;        sql = QString("insert into FriendManager (create_date,name ,phone ,email ,address , description)"                      " VALUES ('%1', '%2' , '%3' , '%4' , '%5' , '%6')")                .arg(create_date).arg(name).arg(phone).arg(email).arg(address).arg(description);        QSqlQuery query;        bool ok = query.exec(sql);        if(ok)        {            QStringList rowData;            rowData << name <<phone <<email << address << description ;            m_pTableWidget->appendRowData(rowData);            QMessageBox::information(this ,QStringLiteral("提示") , QStringLiteral("添加成功!"));        }        else        {            QMessageBox::information(this ,QStringLiteral("提示") , QStringLiteral("添加失败!"));        }    }}

其他SQL语句的使用均类似如下模式,详见项目源码

QSqlQuery query;query.exec();

3.QSqlTableModel的使用

    QSqlTableModel *model = new QSqlTableModel;    model->setTable("person");    model->setEditStrategy(QSqlTableModel::OnManualSubmit);    model->select();    ui->tableView->setModel(model);    ui->tableView->show();

如此便建立了数据库和QTableview的映射,如下:
这里写图片描述
其中,上方表格是手动绘制,下方QTableview是数据库的直接映射。

小结

项目生成的数据库文件用sqlite管理工具sqlitestudio查看如下:
这里写图片描述
简易通讯录完整代码见:简易通讯录

参考

在 QT5 中使用 SQLITE
Qt之操作数据库(SQLite)

原创粉丝点击