SQLite数据库----适配器的使用及异常处理

在上一部分《SQLite数据库—sql语句的基础使用》中介绍了SQLite数据库基本的DDL、DML操作,在最后的一个小案例中,在查询数据库时,使用到了Cursor游标获取了查询结果,但是无法直接使用,我们采用的List集合封装对应的实体类,来完成了ListView的列表展示,所以这一章节,我们使用SQLite的适配器,来直接将查询到的Cursor数据展示到ListView。

在SQLite数据库中,有两种适配器类型:SimpleCursorAdapter、CursorAdapter,接下来分别介绍这两种适配器。

1.SimpleCursorAdapter
我们在查询数据库中的数据时,通常是通过SQLiteOpenHelper的getReadableDatabase或者getWriteableDataBase去获取数据库连接对象,执行sql语句完成查询操作;如果数据库是在SD卡下,或者其他的路径下,该怎么去得到这个数据库的连接对象?
在这里插入图片描述
通过SQLiteDataBase的openDataBase的方式同样也可以获取数据库连接对象进行查询操作。

和之前一样,在执行sql语句得到Cursor对象之后,Cursor对象就是数据源,按之前的做法是将Cursor转换为List集合,填充到适配器中,而这次我们是通过SimpleCursorAdapter来作为ListView的适配器;
在Android中,有一个适配器是SimpleAdapter,他的数据源是Map集合存储键值对,如下图所示
在这里插入图片描述
其实和SimpleAdapter一样,SimpleAdapter是将每个Map加载到每个item上,只不过SimpleCursorAdapter的数据源是Cursor而已。
在这里插入图片描述
用法和SimpleAdapter基本类似,SimpleAdapter是将Map集合中的数据添加到item布局中,SimpleCursorAdapter是将Cursor查询的数据表中的数据添加到item布局。
在这里插入图片描述
通过这个方式进行适配后,运行发现闪退,报错如下:
在这里插入图片描述
字面上的意思是,“_id”字段不存在,是不合法的;在之前建立数据表的时候,我用id作为字段名,我将之前的数据表删除之后,重建数据表。
但是数据表重建之后,还是同样的问题,后来查资料后明白,在使用Cursor类的Adapter时,必须要有这个"_id"字段,而且在sql语句中必须要查找这个字段,之前的sql只是查询了name和age字段,所以加上id字段后,再执行,没问题了。
加上了id字段查询的sql语句
执行后的结果:
在这里插入图片描述
2.CursorAdapter
除了SimpleCursorAdapter之外,还有CursorAdapter同样也可以使用Cursor作为数据源来进行数据的适配。
CursorAdapter是一个继承自BaseAdapter的抽象类,因此需要创建一个类去继承,实现其构造方法和2个重要的view方法;
在这里插入图片描述
因为是继承自BaseAdapter,所以跟BaseAdapter优点类似,两个View的方法相当于将BaseAdapter中的getView方法拆分成了2步:
(1)newView:指的是每个itemView对象;
动态加载itemView的布局
(2)bindView:为每个itemView绑定数据。

为ListView设置适配器,运行正常
在这里插入图片描述
显示结果和SimpleCursorAdapter一样,在此就不展示了。

本文主要介绍了两种Cursor适配器的使用,解决了在《SQLite数据库—sql语句的基础使用》中,需要将Cursor数据源转换为List的弊端,可以直接使用SimpleCursorAdapter或者CursorAdapter对Cursor数据源的直接使用,高效方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Awesome_lay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值