加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

qt与SQLite数据库

发布时间:2020-12-12 20:06:03 所属栏目:百科 来源:网络整理
导读:说起来,真心没有自己用qt去连接过数据库,今天就梳理一下qt操作数据库的方法和相关的设定条件。 Qt版本2.5.0,数据库:SQLite Expert Professional 3。 废话不多说,让我们马上开始: 1、直接建立一个最简单mainwindow窗口程序,然后要再工程文件(.pro)文
说起来,真心没有自己用qt去连接过数据库,今天就梳理一下qt操作数据库的方法和相关的设定条件。 Qt版本2.5.0,数据库:SQLite Expert Professional 3。 废话不多说,让我们马上开始: 1、直接建立一个最简单mainwindow窗口程序,然后要再工程文件(.pro)文件中加入 QT +=sql,之后你才可以引用操作db相应的库。2、首先要查看一下你的qt是否支持SQLite,可以在main函数里写一点小东西来完成这个查看: qDebug () << "Availabledrivers:" ;
QStringList drivers = QSqlDatabase::drivers();
qDebug() << drivers;
运行之后,在应用程序输出的视窗看到你的qt支持的数据库:("QSQLITE","QODBC3","QODBC") 
3、ok,恭喜你,我们的qt很强大,他可以用SQLite,不需要任何多余的插件,接下来写打开DB的程序: 头文件: #include<QObject>
#include <QtSql/QSqlDatabase>
#include <QMessageBox.h>
class sqldb : public QObject
{
 Q_OBJECT
 public:
 explicit sqldb(QObject *parent = 0);
 void connectDB();//创建连接函数
 void closeDB();//创建关闭函数
 signals:
 
 public slots:
 private:
 QSqlDatabase db;//建立数据库的文件描述符
 };
源文件:
#include "sqldb.h"
 
sqldb::sqldb(QObject *parent) :
 QObject(parent)
{
}
void sqldb::connectDB(){
 db = QSqlDatabase::addDatabase("QSQLITE");//添加sqlite类型数据库
 db.setDatabaseName("server.db");//指定数据库名,如果不存在将自动创建,创建在你的workplace目录下
 if(!db.open()){
 QMessageBox::critical(NULL,"sqlDB","connect error");
 return;
 }
}
 
void sqldb::closeDB(){
 db.close();
}
这样就完成连接创建db的基本操作了,当然,如果你想把查询,删除,修改的函数也加上,那就更加完美了,内事不决问百度,外事不决问谷歌。
4、读出数据表的内容,并显示到qt界面上:
首先必须要再.ui文件中拖进来一个QTableView控件,命名为tableview,我们要使用tableview来显示SQLite数据表中的内容,简单。
显示窗口的头文件:
#include <QMainWindow>
#include <sqldb.h>
#include <QtSql/QSqlTableModel>
 
namespace Ui {
class SubMainWindow;
}
 
class SubMainWindow : public QMainWindow
{
 Q_OBJECT
 
public:
 explicit SubMainWindow(QWidget *parent = 0);
 ~SubMainWindow();
 
private:
 Ui::SubMainWindow *ui;
 sqldb* db;//数据库文件描述符
 QSqlTableModel* userModel;//数据表model
};
显示窗口的源文件:
#include "submainwindow.h"
#include "ui_submainwindow.h"
#include <QTableView>
#include <QtSql>
 
SubMainWindow::SubMainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::SubMainWindow)
{
 ui->setupUi(this);
 db = new sqldb(this);//建立
 db->connectDB();//连接
 int test1 = 1234;
 qDebug() << test1;
 userModel = new QSqlTableModel;//建立用户模式空间
 userModel->clear();//初始化用户模式
 int test = 123;
 qDebug() << test;
 userModel->setTable("lishuang");//设置用户模式,必须确保你新创建的数据库里有一个表名叫这个,才能查得到数据哦!~
 userModel->setHeaderData(0,Qt::Horizontal,"name");
 userModel->setHeaderData(1,"age");
 userModel->setHeaderData(2,"password");
 userModel->select();
 ui->tableView->setModel(userModel);
}
 
SubMainWindow::~SubMainWindow()
{
 delete ui;
}
这样做下来,你是看不到你的数据表内容的,因为你之前第三步创建的server.db里根本没有数据,你需要找到你创建的DB,用SQL语句插入一个数据表,再插入若干条记录,才能读出记录并显示在窗口上,如果你失败了,认真阅读本文红色部分的注释,那就是你的问题所在,以上代码特此鸣谢百度,CSDN,道客巴巴,如有问题请留言讨论,共同进步,我爱你们,亲爱的“程序猿”与“码字猴儿”们。结尾了,有图有真相: 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读