作者LZN (秋)
看板AndroidDev
标题Re: [问题] sqlite和xml的选择~
时间Fri Dec 7 17:01:26 2012
※ 引述《bluesnow4425 (残)》之铭言:
: 我在开发的APP含有一些资料 现在我面临一个难题
: 我一开始开发的时候是直接用xml来写(比较省时)
: 但是因为有些资料上是关联的 所以我一直很犹豫要换成sqlite
: 但是我稍微看了sqlite的介绍
: 发现他当然不如sql或mysql这麽方便
: 主要问题在於sqlite似乎没办法删除栏位
: 而我的功能又包含需要使用者可能需要常常新增一个"只属於一笔资料的栏位"
: 比如说A资料具有"形状"属性 但B~Z资料并不需要
: 诸如此类的情形(但A~Z资料还是具有一些共同属性)
: 而使用者可能也需要把"形状"这个属性删掉...
: 这时候我就得把整个资料表drop掉(因为sqlite好像只能整个drop建一个新的?)
: 当然也可以为每笔资料新建一个资料表 但这样太不实际了
: 而且每次显示都得抓出两个表
: 当然XML的问题就是速度比较慢
: 还要避免流水号的错误(资料库因为有ID属性应该比较没有这个问题)
: 不过我的资料都有避免使用三层以上的结构
: 尽量以属性来代替
: 请问这样的状况我还要改用sqlite吗?
如果你的目的主要是想要将储存资料由xml移入database,
而且资料没有多到上万笔的话。
我有个想法你可以参考看看,
1.设计table的栏位为 _id, special_attrs 两栏。
2.程式开始时将全部资料由database读出,并建构成你定义的资料结构(ex..Data)
那麽你的全部资料会是Data array,
这边的重点在於special_attrs 栏位里的值是使用 key=value,key=value,...的方式储存字串
因此取出此栏位後字串,将其parser放入Map<String(key),String(value)>并存放於你的资料结构(Data)中,
你就可以使用map.containsKey(String key)来判断此data是否有key属性
以及使用map.get(String key)来取出key属性的value。
3.储存到database时则要将map里的资料取出并排成key=value,key=value,...的格式存入。
当然这只是一个概念,你可以视情况调整,
例如table的栏位为 _id, common_attr1, common_attr2,... , special_attrs
又或你的value并不都是String,则Map<String,String>可改为Map<String,Object>,取值後在casting,
供你参考看看。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.136.71.197