我在使用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。
答案 0 :(得分:1)
SQLiteDatabase
不适用于SpatiaLite扩展程序。
update()
仅支持简单值,而不支持通用表达式;你不能用它来插入地理对象。
执行命令的唯一方法是手动构建它,然后通过execSQL()
运行它。
您可以编写自己的数据库包装器对象,该对象可以理解SpatiaLite数据类型。
答案 1 :(得分:0)
我明白了。我必须先做一个“SELECT MakePoint(43.2,27.345,4326)”,然后将其插入位置。