掌握QDataBase类的使用方法
掌握Qt与SQlite的连接方法
掌握QTablewidget等项视图类的使用方法
1.QT的连接与查询数据库的方法,查看表的使用
2.使用窗体编辑记录的方法以及在表中显示数据的方式
连接数据库:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db");
QSqlQuery query;
if(!db.open())
{
qDebug()<<"Can't open !";
}
else
qDebug()<<"can open !";
查询数据库:
QSqlQuery query;
query.exec(“/*sql语句*/”)
查询语句:
insert into test_table values('2','he')
delete from test_table where id ='0' and name ='first'
update test_table set name ='first' where id ='3'
查看表的使用:
select 条件 from 表名 where 条件
窗体编辑记录主要使用到信号与槽、QLineEdit,主要是通过通过lineedit->text().tostring进行转化然后结合sql语句进行操作,通过click事件触发相应的槽函数的触发实现。
在表中显示数据的方式
QSqlQueryModel();
modal->setQuery("select * from test_table");
tableview = new QTableView;
tableview->setModel(modal);
实战代码详解:
#ifndef WIDGET_H
#define WIDGET_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
public:
void ConnectDB();
bool CreateTB();
bool InsertData(QString id, QString name);
bool SelectData();
bool deleData(QString id, QString name);
bool updData(QString id, QString name);
private slots:
void addData();
void deleteData();
void updateData();
void refreshData();
private:
QPushButton *addBtn;
QPushButton *delteBtn;
QPushButton *updateBtn;
QPushButton *refreshBtn;
QLineEdit *idLine;
QLineEdit *nameLine;
QLabel *id;
QLabel *name;
QSqlQueryModel *modal;
QTableView *tableview;
};
#endif // WIDGET_H
实现代码:
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
ConnectDB();
CreateTB();
addBtn = new QPushButton(tr("add"));
delteBtn = new QPushButton(tr("delete"));
updateBtn = new QPushButton(tr("update"));
refreshBtn = new QPushButton(tr("refresh"));
idLine = new QLineEdit;
nameLine = new QLineEdit;
id = new QLabel(tr("id:"));
name = new QLabel(tr("name:"));
modal = new QSqlQueryModel();
modal->setQuery("select * from test_table order by id");
tableview = new QTableView;
tableview->setModel(modal);
QHBoxLayout *hbox1 = new QHBoxLayout;
hbox1->addWidget(addBtn);
hbox1->addWidget(delteBtn);
hbox1->addWidget(updateBtn);
hbox1->addWidget(refreshBtn);
QHBoxLayout *hbox2 = new QHBoxLayout;
hbox2->addWidget(id);
hbox2->addWidget(idLine);
hbox2->addWidget(name);
hbox2->addWidget(nameLine);
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(tableview);
vbox->addLayout(hbox1);
vbox->addLayout(hbox2);
setLayout(vbox);
connect(addBtn,SIGNAL(clicked()),this,SLOT(addData()));
connect(delteBtn,SIGNAL(clicked()),this,SLOT(deleteData()));
connect(updateBtn,SIGNAL(clicked()),this,SLOT(updateData()));
connect(refreshBtn,SIGNAL(clicked()),this,SLOT(refreshData()));
}
void Widget::ConnectDB()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db");
QSqlQuery query;
if(db.open())
{
qDebug()<<"open !";
}
else
{
qDebug()<<"can't open !";
}
}
bool Widget::CreateTB()
{
QSqlQuery query;
bool success = query.exec("create table if not exists test_table (id int primary key, name varchar)");
if(!success)
{
qDebug()<<"create table false";
qDebug() << query.lastError().text();
return false;
}
else
{
qDebug()<<"create table success";
QMessageBox::warning(this,"Error","create successful");
return true;
}
}
bool Widget::InsertData(QString id, QString name)
{
QSqlQuery query;
QString str;
str = "insert into test_table values('";
str += id;
str += "','";
str += name;
str += "')";
//测试专用
qDebug() << str;
bool s = query.exec(str);
qDebug()<text();
Gname = nameLine->text();
InsertData(Gid, Gname);
}
void Widget::deleteData()
{
QString Did,Dname;
Did = idLine->text();
Dname = nameLine->text();
deleData(Did,Dname);
}
void Widget::updateData()
{
QString Uid,Uname;
Uid = idLine->text();
Uname = nameLine->text();
updData(Uid,Uname);
}
void Widget::refreshData()
{
modal->setQuery("select * from test_table order by id");
//tableview = new QTableView;
tableview->setModel(modal);
}