FROM scores WHERE id=19\ if(query.next()) { //str = query.value(0).toString(); str = \中国\ query.exec(\VALUES(’\ } database.commit(); } 注意,如果str为中文字符串,在SQL语句中需要标明’str’(用单引号括起),如果是英文或数字字符串,能不加单引号(指的是包含在双引号内的SQL语句)
9.使用SQL Model类
QSqlQueryModel——一个只读的读取数据库数据的模型 QSqlTableModel——一个可读写的单一表格模型,能不用写SQL语句
QSqlRelationalTableModel——QSqlTableModel的一个子类
这些类都继承于QAbstractTableModel,而他们又都继承于QAbstractItemModel
(1) QSqlQueryModel的使用QSqlQueryModel querymodel; querymodel.setQuery(\scores ORDER BY id ASC\ for
(num=0;numquerymodel.rowCount();num++) { str += QString::number(querymodel.record(num).value(\
()); str += \ str +=
querymodel.record(num).value(\ //注意这里的value()参数能是index(索引)也能是字段名,前面QSqlQuery的value()参数只能是index str += \\n\ } label->setText(str); (2) QSqlTableModel的使用
① 读取数据QSqlTableModel tablemodel;
tablemodel.setTable(\ tablemodel.setFilter(\> 10\ tablemodel.setSort(0,Qt::DescendingOrder); tablemodel.select(); for
(num=0;numtablemodel.rowCount();num++) { str += QString::number(tablemodel.record(num).value(\)); str += \ str +=
tablemodel.record(num).value(1).toString(); str += \\n\ } label->setText(str);
② 修改数据QSqlTableModel tablemodel;
tablemodel.setTable(\ tablemodel.setFilter(\> 10\ tablemodel.setSort(0,Qt::DescendingOrder); tablemodel.select(); for
(num=0;numtablemodel.rowCount();num++) { QSqlRecord record = tablemodel.record(num); record.setValue(\
2\ tablemodel.setRecord(num,record); } if(tablemodel.submitAll()) label->setText(\修改成功!\ else label->setText(\修改失败!\ 或能用setData()来修改,代码如下: QSqlTableModel tablemodel; tablemodel.setTable(\ tablemodel.setFilter(\
tablemodel.setSort(0,Qt::DescendingOrder); tablemodel.select();
tablemodel.setData(tablemodel.index(2,1),\修改\ if(tablemodel.submitAll()) label->setText(\修改成功!\ else label->setText(\修改失败!\ ③ 删除数据tablemodel.removeRows(row, 5);
//removeRows()第一个参数为要删除的第一行的行数,第二个参数为要删除的总行数; tablemodel.submitAll(); //注意,利用QSqlTableModel修改或删除数据,最后都要使用submitAll()执行更改
④ 插入数据QSqlRecord record = tablemodel.record(); record.setValue(\插入的\ tablemodel.insertRecord(2,record);
注意,此处插入利用insertRecord()函数,该函数第一个参数为插入到tablemodel的第几行,第二个参数为记录,注意这里的记录一 定要和tablemodel中的记录匹配,故
QSqlRecord record = tablemodel.record();另外,插入操作不用submitAll(),因为,insertRecord()返回bool值。 10.使用QTableView
开头处要使用#includeQTableView *view = new QTableView(); view->setModel(&model); view->setEditTriggers(QAbstractItemView::NoEditTriggers); view->show();
小结:关于QT操作数据库 学习基础的内容介绍完了,希望本文对你有所帮助,更多关于数据库的内容请参考编辑推荐。