Qt_数据库, QSqlDatabase, QSqlQuery

QSqlDatabase是引用计数, removeDatabase

看一个错误代码

{
   
	' 此时, 我们保证,  QSqlDatabase::database( "abc") 这个数据库连接, 是: 打开了的 ' 
	
	QSqlDatabase db = QSqlDatabase::database( "abc");
	
	' 当我们想, 释放 这个数据库连接 '
	db.close();
	QSqlDatabase::removeDatabase( "abc");
}

看起来, 好像是正确的…

但是, removeDatabase 要求, 这个数据库连接, 他的 引用计数, == 1;

但是, 你QSqlDatabase db = QSqlDatabase::database( "abc")后, 此时, 是有2个引用!!!

所以, 这是错误的!!

正确做法是:

{
   	
	{
   
		QSqlDatabase db = QSqlDatabase::database( "abc");
	}
	
	' 当我们想, 释放 这个数据库连接 '
	QSqlDatabase::database( "abc").close();
	QSqlDatabase::removeDatabase( "abc");
}

QSqlQuery

insert

如果这个记录已经存在,那么重复插入, exec 会返回 false

Version——————

overview

QT SQL模块提供了一个【与平台无关】【与数据库无关】的访问SQL数据库的接口
/ QT都是通过一个【模块】来提供对某种【功能】的支持,比如对于数据库功能 就对应SQL模块
/ 所谓模块,即QT在他里面写了很多的类
/ 引入一个模块, 在项目文件.pro里 添加【QT += sql】

驱动层

驱动层是为【数据库】与【SQL接口层】提供了桥梁
QT的SQL模块是独立于数据库的,所以所有的数据库代码都在【数据库驱动程序】中
/ SQL模块中属于驱动层的类有: QSqlDriver、QSqlResult

QSqlDatabase::drivers() 得到所有的数据库驱动程序

SQl接口层

SQL接口层提供了对数据库的访问
有:QSqlDatabase,QSqlQuery,QSqlError,QSqlField,QSqlIndex,QSqlRecord

' QSqlDatabase创建数据库的连接,这个连接通过【数据库驱动程序QSqlDriver】来访问数据库 '
									QSqlDatabase对象
xx.db文件  -> ("xx_conn1"连接名)-> 	    xx_db_1
		  					  ->  		xx_db_2
注意,xx_db_1 和 xx_db_2 都是通过"xx_conn1"这个连接名,连接到的数据库xx.db文件!!
QSqlQuery query1(xx_db_1),  query2(xx_db_2);
	/2个SqlQuery,通过同一个“xx_conn1"连接名, 来操作xx.db文件
	/     虽然,xx_db_1 和 xx_db_2 是两个不同的对象,但因为他俩的连接名一样
	/     即他俩都是addDatabase("SQLITE",
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值