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对象来进行回滚或提交操作!
插入行、删除行等...
关系数据表,先不详细看了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义