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