我要将一个文本
文件转换成SQLite
数据库形式; 我担心以下几点,因为需要付出努力来编写代码:
- 文本文件和它对应的SQLite数据库文件大小是否相同?
- SQLite占用的空间是否比文本文件少?
- 还是文本文件数据库是最小的?
我要将一个文本
文件转换成SQLite
数据库形式; 我担心以下几点,因为需要付出努力来编写代码:
"硬件很便宜" - 我强烈建议不要担心大小差异,因为这可能无关紧要,并且选择最符合您其余需求的解决方案。对于简单项目,文本文件可以很好地工作,但数据库具有更多功能,可以帮助您更有效地组织、备份和查询数据。
如果您想更深入地了解两种选项的优缺点,请查看:数据库 vs. 平面文件
需要注意以下事项:
(关于此答案的说明:这里的“文件”指的是内部/外部存储,而不是SharedPrefs)
SQL:
文件:
操作系统为每个文件使用空间,不包括内容。例如文件名称,它占用空间。但要记住的一点是,您可以将应用程序的所有数据保存在单个文件中。如果有两种不同类型的对象可能存在命名冲突的应用程序,则可以创建一个新的数据库。
命名冲突
假设您有两个对象,对象 X 和 Y。
情况1'
对象 X 存储两个变量。文件名分别为(x 和 y 是此例中的坐标):
x.txt
y.txt
但在后续版本中,对象Y带有相同的两个文件。因此,您需要为对象X和Y分配一个ID:
0-x.txt
0-y.txt
[id][variable name].txt
但是由于有另一个拥有3个相同类型子元素(并保存相同文件)的父级,最后保存的子元素会被保留。前三个将被覆盖。
因此,您必须添加父级ID:
[parent ID][child ID][variable name].txt
SELECT * FROM childrentable WHERE `parent_id`='436'
这将为所有以对象436作为父级的子级提供所有属性。
当返回时,所有信息都存储在游标中。
如果您使用文件执行相同操作,此行(其中Saver
是保存和加载文件的类):
Saver.load("0-436-file_name", context);