首先新建一个数据库:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database.db");
给数据库文件加密:
db.setUserName("hsl");
db.setPassword("000000"); //注意,这仅仅是对database.db这个文件进行加密
将数据库显示在QTableView中
QTableView *selectView;
QSqlTableModel *model;
model=new QSqlTableModel(this);
model->setTable("表名");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0,Qt::Horizontal,tr("xx"));
model->setHeaderData(1,Qt::Horizontal,tr("xx"));
model->setHeaderData(2,Qt::Horizontal,tr("xx"));
selectView=new QTableView(this);
selectView->setAlternatingRowColors(true);//可以改变QableView颜色
selectView->setModel(model);
对QtableView中的数据进行操作:
在tableview中升序排列:
model->setSort(0,Qt::AscendingOrder); //id属性,即第0列,升在tableview中序排列
model->select();
在tableview中按降序 排列:
model->setSort(0,Qt::DescendingOrder);
model->select();
在tableview中删除行
int curRow = ui->tableView->currentIndex().row(); //获取选中的行
model->removeRow(curRow); //删除该行
int ok = QMessageBox::warning(this,tr(“删除当前行!”),tr(“你确定删除当前行吗?”),QMessageBox::Yes,QMessageBox::No);
if(ok == QMessageBox::No)
{
model->revertAll(); //如果不删除,则撤销
}
else
model->submitAll();
在tableview中插入
int rowNum = model->rowCount(); //获得表的行数
int id = 10;
model->insertRow(rowNum); //添加一行
model->setData(model->index(rowNum,0),id);
对数据库表进行查询
(1)全字匹配
QString str = "hsl";
model->setFilter(QObject::tr("name = '%1'").arg(str));
model->select();
(2)模糊匹配
QString str = a_ui->find_lineEdit->text();
//QT正则表达式
rx.setPatternSyntax(QRegExp::RegExp);
//匹配格式为所有数字组成的字符串,位数不限
rx.setPattern(QString("^[0-9]+$"));
//如果全是数字,进行 ID 的模糊查询
if(rx.exactMatch(str))
{
model->setFilter(QString::fromLocal8Bit("dish_no like '%1'").arg(QString("%")+=str+=QString("%")));
model->select();
}
else
{
model->setFilter(QString::fromLocal8Bit("dish_name like '%1'").arg(QString("%")+=str+=QString("%")));
model->select();
}