React Native集成SQLite详解

原文写于个人博客,欢迎关注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 getPackages() {
      return Arrays.asList(
          new MainReactPackage(),
          new SQLitePluginPackage()
      );
    }

至此Android端的配置也完成了。

使用

index.ios.jsindex.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的一些常规操作,不再赘述。

你可能感兴趣的:(React Native集成SQLite详解)