Skip to content

附、SqliteUtility

wangdan edited this page Oct 12, 2014 · 1 revision

使用SqliteUtility,可以针对object直接进行数据库增删改查操作。

数据库配置

可以根据不同的key配置多个数据库,getInstanceInApp(String key, String dbName)实例化的db位于/data/data/[PACKAGE_NAME]/databases目录下,getInstanceInSdcard(String key, String dbName)获取的db位于相对于root_path的path目录下(root_path、path均为SettingUtility配置)。

Object配置

每一个进行数据库操作的对象,都必须进行id配置。

例如像这样

public class StatusContent implements Serializable {
    /**
     * 微博ID
     */
    @Id(column = "id")
    private String id;
}

或者像这样

<setting type="org.sina.android.bean.StatusContent">
	<extras>
		<extra type="id">
			<value>id</value>
		</extra>
	</extras>
</setting>

如果两种配置都配置了,那么以sqlite.xml配置优先。

说明

数据库的table以Object的完整包路径为表名,所有属性为字段新建表,属性如果是基本类型,则表字段类型为对应的text或者int类型。如果是其他,例如一个属性是对象引用,则这个字段类型创建为text且数据转换为gson数据和再保存。table保留四个字段_id、com_m_common_owner、com_m_common_key、com_m_common_createat。

_id

类型为int,table主键自增

com_m_common_owner

类型为text,额外字段,标志当前的数据所有者。

com_m_common_key

类型为text,额外字段,标志当前的数据类型

com_m_common_createat

类型为text,额外字段,标志当前的数据在db的新建或者更新时间,单位为s

例如Aisen微博的关注、粉丝、互粉等数据的数据类型均为WeiBoUser,所以使用com_m_common_key字段标志区分,而且以 com_m_common_owner字段标志所有者(不同的授权账号)。具体代码见FriendDB

须知

具体的增删改查代码,大家去看Aisen微博的代码吧,这里FriendMentionDB有,这里AccountDB也有,这里EmotionsDB还有,Aisen微博中所有针对数据库操作都是使用SqliteUtility

注意

当一个对象的属性发生更改时,如果是新增属性,则数据库表会自动新增对应的字段,值默认为null,如果是删除属性,那么没辙了,因为sqlite没有允许删除字段操作。

Clone this wiki locally