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