第一行创建了一个连接对象,创建后初始化了数据名,open函数打开后就可以使用。
QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");//建立数据库
db.setDatabaseName("powerSkiving.db");
if(!db.open())
{
QMessageBox::warning(NULL, "提示", "打开数据库失败", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}
可以创建多个数据库连接
QSqlDatabase firstdb=QSqlDatabase::addDatabase("QSQLITE","first");
QSqlDatabase seconddb=QSqlDatabase::addDatabase("QSQLITE","second");
创建数据库
#ifndef DATABASE_H
#define DATABASE_H
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlDatabase>
#include <QMessageBox>
#pragma execution_character_set("utf-8")
static bool createConnection()
{
QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");//建立数据库
db.setDatabaseName("powerSkiving.db");
if(!db.open())
{
QMessageBox::warning(NULL, "提示", "打开数据库失败", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}
QSqlQuery query;
query.exec(QObject::tr("create table studentTab (学号 int primary key, 姓名 varchar(30), 性别 varchar(30), 年龄 int, 身高 double, 体重 double)"));
query.exec(QObject::tr("insert into machinetooldb values(11211,'张三','男',22,175.5,70.3)"));
query.exec(QObject::tr("insert into machinetooldb values(11212,'李四','男',23,180.5,68.3)"));
return true;
}
#endif // DATABASE_H
tableview显示数据库表格
userModel=new QSqlTableModel;
userModel->setTable("studentTab");
userModel->setEditStrategy(QSqlTableModel::OnFieldChange);//表格改变模式
ui->tableUser->setModel(userModel);
userModel->select();
ui->tableUser->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableUser->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableUser->setEditTriggers(QAbstractItemView::NoEditTriggers);
添加数据
QSqlQuery query;
query.exec(QObject::tr("insert into studentTab values(?,?,?,?,?,?)"));
query.bindValue(0,11213);
query.bindValue(1,"王二");
query.bindValue(2,"男");
query.bindValue(3,22);
query.bindValue(4,178.3);
query.bindValue(5,68.8);
if(query.exec())
{
QMessageBox::information(this,QString("提示"),QString("添加成功!"));
}
删除数据
QModelIndex index=ui->tableUser->currentIndex();
if(!index.isValid())
{
QMessageBox::information(this,QString("提示"),QString("请选择待删除的记录!"));
return;
}
userModel->removeRow(index.row());
userModel->select();
修改数据
QSqlQuery query;
query.exec(QObject::tr("update studentTab set name='%1' where num=%2").arg("陈五").arg(112113));
QSqlQuery query;
query.exec(QObject::tr("update studentTab set name='?' where num=?"));
query.bindValue(0, "陈五");
query.bindValue(1, 112113);
查询数据
数据库模型
userModel->setFilter(QString("姓名=“%1'").arg("张三"));
ui->tableUser->setModel(userModel);
数据库语句
QSqlQuery query;
query.exec(QObject::tr("select * from studentTab where num=?").arg(112113));