与Android相关的数据库问题

时间:2011-01-05 15:04:16

标签: sql

我正在使用SQLite在Android应用程序中存储数据。我需要从具有2个位置之间关系的文件中转储数据。 e.g。

该表格将包含以下字段

位置1位置2距离

X Y 12

X Z 13

Y X 12

如果我将数据作为一行转储,那么我正在复制数据,即位置X和X之间的距离。位置Y.我倾倒了两次,一次是从X到Y&从Y到X的另一个,但是它可以帮助我进行SQL查询,因为我可以直接给出Location1&位置2值&得到距离。

如果我想避免重复数据,我该如何处理? 我将只在位置1和位置之间输入一次数据。 2但是我将如何编写选择查询。

如果有人对数据库结构有任何建议/示例代码&查询,请发帖。

另外哪种方法可以让我更快地处理Android应用程序

温暖的问候,

CB

1 个答案:

答案 0 :(得分:0)

我不是100%清楚你在问什么。您是说您要复制数据,因为两个字段Location1和Location2之间的差异与距离字段相同?如果是这种情况,那么你可以保留Location1和Location2。如果您需要差异,请按照以下方式进行查询:

SELECT abs(Location1 - Location2) FROM [table] WHERE [whatever]

“abs”给出绝对值。

就处理时间而言,我觉得这比表中的Distance字段慢,但我们会回到你的重复问题。

这有帮助吗?或者我是否误解了你的问题?


更新
我想我明白。您有一堆位置V,W,X,Y,Z等。用户将从下拉框Location1和Location2中选择,然后您的应用将提供两者之间的距离。

所以说用户为Location1选择Y,为Location2选择W,你的应用将返回Y - W.

你过于复杂了。您的数据库只需要每个位置的记录,即:

LocationName | LocationCoordinates
          V                (x, y)
          W                (x, y)
          X                (x, y)
          Y                (x, y)
          Z                (x, y)

然后,当用户选择Location1和Location2时,只需从数据库中提取LocationCoordinates,然后获取差异。根据您在数据库中存储位置的方式,您甚至可以在SQL中执行所有操作。但是现在我建议您只使用SELECT语句来获取位置并找到代码中的差异(距离)。