原文写于个人博客,欢迎关注www.xiaolewei.com
前言
最近在使用React Native
写一个密码管理的软件。加密后的密码准备使用SQLite
进行存储,在Github
上看了一下,react-native-sqlite-storage这个包是Star最高的一个。所以就选这个了,并且特记录一下整个整合工作。
配置-IOS
首先在RN的根目录下安装sqlite
的包:
npm install --save react-native-sqlite-storage
然后进行link
rnpm link
rnpm 即 React Native Package Manager,是react native的专门的包管理工具。
如果还没有安装过rnpm
或者link
报错,可以尝试一下命令:
npm -g install rnpm xcode
通常情况经过上述两步即可完成依赖的配置工作。当然官方还提供了使用pod
以及手动link的教程,由于比较繁琐这里不赘述了,留个传送门
配置-Android
同上首先下载安装包:
npm install --save react-native-sqlite-storage
然后进入android
子目录,在setting.gradle
文件的include ':app'
上面一行添加:
include ':react-native-sqlite-storage'
project(':react-native-sqlite-storage').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sqlite-storage/src/android')
再在app/build.gradle
文件的dependencies
中添加:
dependencies {
...
compile project(':react-native-sqlite-storage')
}
最后在app/src/java/com/[项目名]/MainApplication.java
文件中添加修改成如下内容:
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new SQLitePluginPackage()
);
}
至此Android
端的配置也完成了。
使用
在index.ios.js
和index.android.js
中添加
import SQLite from 'react-native-sqlite-storage';
SQLite.DEBUG(true);
SQLite.enablePromise(true);
这样添加的好处是可以将SQLite
作为一个全局对象去使用。包括数据库的打开、连接等操作均可以这么处理。
SQLite.openDatabase({name: 'my.db', location: 'default'}, successcb, errorcb);
在Android
下,由于数据库文件位于固定位置,所以location
参数是无效的。
在IOS
下,location
有以下3个可选参数:分别为
default
:数据文件会放置在Library/LocalDatabase
子目录下,对iTunes不可见,也不会被iCloud备份Library
:数据文件会放置在Library
子目录下,对iTunes不可见,但是会iCloud备份Documents
:数据文件会放置在Library
子目录下,对iTunes可见,同时会iCloud备份
剩下的就是关于SQLite
的一些常规操作,不再赘述。