SQL模块概述


QSqlTableModel的使用
可读可写
BLOB(binary large object),二进制大对象,是一个可以存储二进制文件的容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#include <QtSql> #include <QDataWidgetMapper>
QSqlDatabase DB=QSqlDatabase::addDatabase("QSQLITE"); DB.setDatabaseName(DBFile); DB.open(); QSqlTableModel *tabModel=new QSqlTableModel(this,DB); tabModel->setTable("employee"); tabModel->setEditStrategy(QSqlTableModel::OnManualSubmit); tabModel->setSort(tabModel->fieldIndex("empNo"),Qt::AscendingOrder); tabModel->setHeaderData(tabModel->fieldIndex("empNo"),Qt::Horizontal,"工号");
QDataWidgetMapper* dataMapper=new QDataWidgetMapper(); dataMapper->setModel(tabModel); dataMapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
dataMapper->addMapping(ui->dbSpinEmpNo,tabModel->fieldIndex("empNo"));
QSqlRecord emptyRec=tabModel->record(); QSqlRecord curRec=tabModel->record(curRecNo); QByteArray data=curRec.value("Photo").toByteArray(); QPixmap pic; pic.loadFromData(data);
tabModel->insertRow(tabModel->rowCount(),QModelIndex()); QModelIndex curIndex=tabModel->index(tabModel->rowCount()-1,0); tabModel->setData(tabModel->index(currow,2),"男");
QModelIndex curIndex=ui->tableView->currentIndex(); tabModel->insertRow(curIndex.row(),QModelIndex());
tabModel->revertAll(); bool res=tabModel->submitAll(); tabModel->isDirty();
QModelIndex curIndex=theSelection->currentIndex(); tabModel->removeRow(curIndex.row()); tabModel->setSort(ui->comboFields->currentIndex(),Qt::AscendingOrder); tabModel->setFilter(" Gender='男' ");
|
QSqlQueryModel的使用
只能读,不能写

1 2 3 4 5 6 7 8 9
| #include <QtSql> #include <QDataWidgetMapper> QSqlDatabase DB=QSqlDatabase::addDatabase("QSQLITE"); DB.setDatabaseName(aFile); DB.open(); QSqlQueryModel *qryModel=new QSqlQueryModel(this); qryModel->setQuery("SELECT * FROM employee ORDER BY empNo"); qryModel->lastError().isValid(); ui->tableView->setModel(qryModel);
|
QSqlQuery的使用

1 2 3 4 5 6 7 8 9 10
| QSqlQuery query; query.prepare("select EmpNo, Memo, Photo from employee where EmpNo = :ID"); query.bindValue(":ID",empNo); query.exec(); query.first(); QVariant va=query.value("Photo"); qryModel->query().exec();
QString sqlStr=qryModel->query().executedQuery(); qryModel->setQuery(sqlStr);
|
QSqlRelationalTableModel

1 2 3
| QSqlRelationalTableModel *tabModel=new QSqlRelationalTableModel(this,DB);
tabModel->setRelation(3,QSqlRelation("departments","departID","department"));
|