Android:无法使用SQL扩展功能或内置更新行

时间:2012-10-16 13:42:24

标签: android sqlite spatialite

我在使用SQLiteDatabase命令时遇到了很多麻烦。我已经加载了spatialite并启用了扩展。我希望我的一个值是MakePoint函数的输出,所以我有一个像这样的内容值:

values.put("Location", "MakePoint(43.2, 27.345, 4326)");

当它被传递到SQLiteDatabase.Update()时,它被转义,结果字符串最终成为"UPDATE Targets SET Location='MakePoint(43.2, 27.345, 4326)'" SQLite讨厌这个并抛出异常。

有一个简单的方法吗?现在我正在尝试手动构建字符串,因为我无法使用Update。

2 个答案:

答案 0 :(得分:1)

SQLiteDatabase不适用于SpatiaLite扩展程序。 update()仅支持简单值,而不支持通用表达式;你不能用它来插入地理对象。

执行命令的唯一方法是手动构建它,然后通过execSQL()运行它。

您可以编写自己的数据库包装器对象,该对象可以理解SpatiaLite数据类型。

答案 1 :(得分:0)

我明白了。我必须先做一个“SELECT MakePoint(43.2,27.345,4326)”,然后将其插入位置。