QT中tableview怎么显示sqlite数据库的内容?qt sqlite windows
QT中tableview怎么显示sqlite数据库的内容?
最近工作中用到了QT、sqlite3,这里记录当中用到的一些知识点:具体就是在QT的widget中用tableview显示sqlite数据库表中的内容。 假设有数据库文件test.db,有表table(id integer, name nvarchar(20),age integer),且有数条数据……(随意建的表) 第一用QTcreator创建一个基于Widget类的窗口,再拖一个tableview到widget中,保存,然后按照如下方法进行:
(图片来源网络,侵删)1.在widget.h中增添头文件:QtSql/qsql.h、QtSql/QsqlDatabase、QtSql/QsqlQuery、QtSql/QsqlQueryModel
2.在.pro工程文件中添加:QT+=sql
3.在widget.cpp中widget的构造函数中添加如下代码: QsqDatabase db = QsqlDatabase::addDatabase("SQLITE"); db.setDatabaseName("test.db"); if(!db.open()) { //错误处理 } static QSqlQueryModel *model = new QSqlQueryModel(ui->tableview); model->setQuery(QString("select * from table;")); model->setHeaderData(0,Qt::Horizontal,QObject::tr("编号")); model->setHeaderData(1,Qt::Horizontal,QObject::tr("姓名")); model->setHeaderData(2,Qt::Horizontal,QObject::tr("年龄")); ui->tableview->setModel(model); db->close(); 这样之后,table表里的内容就会显示到tableview中了。
(图片来源网络,侵删)QTgui数据库QSQLITE的数据插入和查询验证?
没有初始化数据库连接吗?数据库操作是I/O操作,需要和数据库引擎建立连接,然后才能使用基于数据库的各种功能在Qt里,是用QSqlDatabase::addDatabase添加特定类型的数据库连接如果你在添加连接时没有显示指定连接名称,那么就会建立一个默认连接,这时返回的QSqlDatabase对象可以不用自己保存,全局任何没指定QSqlDatabase对象的QSqlQuery及其他数据库操作,都会使用这个默认连接比如说我要操作一个SQLite数据库,那么在建立这个QSqlTableModel之前,需要做的事是
如果不是关键性的功能,则操作失败后可以让对应的模块不加载。比如想用来显示表格,那么可以在控件初始化之前进行数据库连接,连接失败则不显示控件如果是关键性功能,则最好放在main函数里,在应用启动时就进行数据库初始化,若初始化失败,则用qWarning或者qFatal提示错误,并且return -1退出程序到此,以上就是小编对于的问题就介绍到这了,希望这2点解答对大家有用。
(图片来源网络,侵删)