Qt操作sqlite数据库

代码讲解:

1.检查数据库文件是否存在,如果不存在就创建数据库文件

2.创建 person 表(等下的操作就是操作这个表)

3.查询出 person 表中所有的数据,并显示出来

 

 

Pro 文件 添加 SQL

QT += sql

 

 

.h 头文件

#include <QtSql/QSqlDatabase>
#include <QLabel>
#include <QDir>
#include <QSqlQuery>
#include <QTableView>
#include <QSqlTableModel>


public:
    bool connection();  // 测试连接
    void createDB();    // 创建数据库
    void bindData();    // 绑定数据

    QSqlDatabase db;

 

 

.cpp 源文件

    // 实例QLabel
    QLabel *my_label = new QLabel(this);
    my_label->setGeometry(QRect(50, 50, 200, 25));

    // 判断数据库文件是否存在
    bool dbFile = !QFile::exists(QDir::currentPath() + "/db.db");
    if(connection())
    {
        if(dbFile)
        {
            my_label->setText("不存在,请创建");
            createDB();
            bindData();
        }
        else
        {
            bindData();
        }
        db.close();
    }
    else
    {
        my_label->setText("连接失败");
    }
bool MainWindow::connection()
{
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("db.db");
    if(!db.open())
    {
        return false;
    }
    return true;
}

void MainWindow::createDB()
{
    QSqlQuery query;
    query.exec("create table person(id integer primary key autoincrement, name varchar(50) not null)");
    query.exec("insert into person(name) values('zhangsan')");
    query.exec("insert into person(name) values('lisi')");
}

void MainWindow::bindData()
{
    QTableView *table_view = new QTableView(this);
    table_view->setGeometry(QRect(50, 80, 310, 200));

    QSqlTableModel *model = new QSqlTableModel;
    model->setTable("person");
    model->select();

    table_view->setModel(model);
    table_view->setEditTriggers(QAbstractItemView::NoEditTriggers);
}

 

posted @ 2021-08-19 23:29  十一的杂文录  阅读(883)  评论(0编辑  收藏  举报