0

我在使用 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 讨厌它并抛出异常。

有没有简单的方法解决这个问题?现在我正在尝试手动构建字符串,因为我无法使用更新。

4

2 回答 2

1

SQLiteDatabase不是为 SpatiaLite 扩展设计的。 update()仅支持简单值,不支持泛型表达式;您不能使用它来插入地理对象。

执行命令的唯一方法是手动构建它并运行它execSQL()

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

于 2012-10-16T15:09:09.470 回答
0

我想到了。我必须先执行“SELECT MakePoint(43.2, 27.345, 4326)”,然后将其插入位置。

于 2012-10-16T20:00:37.560 回答