前言
最近在做安卓开发,一直涉及到空间数据的存储,安卓是使用了spatialite-android封装好的jar包去操作sqlite数据库,但是把sqlite拷贝出来后用navicate打开后反而无法直接进行那些空间函数的使用。
一、spatialite是什么
spatialite是在sqlite的外部再包了一层空间数据的封装。
二、使用步骤
1.下载spatialite
下载地址
网址界面如下图,32位电脑就下载32的版本,64就下载64位的版本,我也不知道为什么64位后面要加个amd。
2.解压压缩包
下载完成后解压代码压缩包,会得到许多dll文件。
3.将所有的dll迁移
可能并不需要所有的dll,但我为了方便省事,直接全部复制了。将所有的文件迁移到navicate的安装目录。例如:D:\Program Files\PremiumSoft\Navicat Premium 17,这是我本地的安装目录。可自行替换。
4.激活mod_spatialite.dll
使用navicate打开你本地的sqlite文件,可能需要注意sqlite的版本,低版本的sqlite不一定支持高版本的spatialite。大家可以使用下面的sql进行查询,查询自己的sqlite版本是多少。本人sqlite版本为3.45.0
SELECT sqlite_version();
打开sqlite之后执行
SELECT load_extension('mod_spatialite.dll');
开始网上很多教程都是让人使用绝对路径去使用这个dll, 例如:
SELECT load_extension('D:\mod\mod_spatialite.dll');
不确定是不是我路径有问题,或者拼写有问题,一直报错找不到模块,后续还是直接迁移dll到navicate安装目录才能一次性成功。大家有兴趣的可以接着试试采用绝对路径的方式,看看能否成功,成功了的话可以给我留言。
执行完加载mod_spatialite.dll没有错误的情况下进行执行。
SELECT spatialite_version();
成功之后返回spatialite版本号。然后就可以使用一些空间函数去操作数据库了。
总结
以上就是在navicate中加载sqlite的spatialite扩展方式了,有一点不好的地方在于每次使用都需要重新加载,并不能一劳永逸。