17 数据库和xml(xml还没看)

 讲的很好!!!

驱动层:桥接

SQL层:访问数据库

1)连接数据库 QSqlDatabase,查看支持的数据库类型,plugins/sqldrivers里也可以看到驱动插件文件

2)和数据库交互 QSqlQuery

其它几个类都是辅助类,

用户接口层:将数据放到窗口上

 

连接什么类型数据库(addDatabase),哪台主机的哪个数据仓库,并用户名和密码(端口),最后需要打开

QSqlDatabase:这个应该叫connect,就是一个数据库连接,也可以有几个数据库连接。

 

特别的:可以在内存中创建数据库,只在运行期间有效

 

如果使用具体数据库的名称,如my.db,就可以在项目目录中创建数据库!!!

387页

QSqlQuery可以看成是指向整个数据库表(也可以理解为二维数组)的对象,之前前一行内容吗?

query.value(0).toInt()、query.value(1).toString()就可以取得值了

也有多个连接的情况389页,这里是连接了两个数据库

QSqlQuery怎么交互1?用exec接口就可以实现增、删、改、查了

如果exec返回错误,那么可以用lastError()来查看(这些都只是辅助,记住主线就行了)

QSqlQuery怎么交互2?用多个接口next(), first(), last(), previous(), seek(),以及如下:

QSqlQuery提高遍历速度:setForwarOnly

当前行索引:at

当前记录:record,可以通过字段取值:record.value("name").toString();

如何取得字段名:field,392页

插入多条语句:393页

 

事务:用于保证一个复杂操作的原子性,

1)事务开始

2)事务提交

3)事务回滚

394页,讲的有点少。

 

接下来就是让数据库在窗口中显示和操作:无非是model、view,就要看用哪个model或哪个view了

1)QSqlQueryModel:

QSqlQueryModel(名字记一下,就是在前面的QSqlQuery后面添加了model),一个setquery就可以把数据集放到model中了

QTableView呢,一个setModel就把Model放到view中显示了,公共没几句话。

QSqlQueryModel的query()函数可以返回QSqlQuery对象!!!这样就可以操作数据库了。

 

2)QSqlTableModel:可以编辑表格(什么时候用上面的,什么时候用这个,没说)

引申记忆:因为有table了,所以可编辑了

因为可以编辑了,所以有个setEditStrategy(),

setTable,select

编辑的提交策略:3种情况,398页。立即提交、换行提交、submitAll或revertAll提交。

可以取得QSqlDatabase对象来进行回滚或提交操作!

插入行、删除行等...

关系数据表,先不详细看了。

 

posted @ 2022-12-06 10:00  妖山鬼店  阅读(42)  评论(0)    收藏  举报