/sqlite

Community plugin for native & electron SQLite databases

Primary LanguageSwiftMIT LicenseMIT


SQLITE DATABASE

@capacitor-community/sqlite


CAPACITOR 3


Capacitor community plugin for Native and Electron SQLite Databases. In Native databases could be encrypted with SQLCipher



Maintainers

Maintainer GitHub Social
Quéau Jean Pierre jepiqueau

CAPACITOR 3 (Master)

🚨 !!! Sorry for Electron developper, they will have to wait for @capacitor-community/electron release 4 before getting the @capacitor-community/sqlite Electron plugin part !!! 🚨

🚨 Since release 3.1.2 ->> 🚨

Thanks to Nirajhinge and Chris, an example of using the TypeORM driver in a Ionic/Vue app has been developed see https://github.com/jepiqueau/vue-typeorm-app.

🚨 Since release 3.0.0-rc.2 ->> 🚨

Thanks to Chris, a driver to TypeORM is now available

🚨 Since release 3.0.0-beta.13 ->> 🚨

  • GlobalSQLite secret and newsecret are deprecated

  • The user can now set its own secure secret (passphrase)

    • use setEncryptionSecret ONCE to migrate encrypted databases from secret to secure stored secret

    • use changeEncryptionSecret to change your secure stored secret

  • iOS used KeyChain service to store the secret

  • Android used Encrypted SharedPreferences to store the secret, the minimun sdk should be set to 23 (limitation from Google)

🚨 Since release 3.0.0-beta.13 ->> 🚨

🚨 Since release 3.0.0-beta.11 ->> 🚨

  • Checking of types has been removed in all methods of the plugin both iOS & Android. This has been achieved to allow the use of others RDBMS types. The type checking is now under the responsability of the developers.

  • NULL values are now returned as null

  • values for the query method is now an Array of any.

  • option to disable transaction for the execute, executeSet, run.

🚨 Since release 3.0.0-beta.11 <<- 🚨

The test has been achieved on:

REFACTOR (Move to branch 2.9.x)

The 2.9.x is now 🛑 NOT MAINTAINED ANYMORE 🛑.

The refactor offers now (since 2.9.0-beta.1) all the features that the previous was offering. It has been a quite heavy process, hoping that the developpers will take benefit from it.

The main reasons for it:

  • multiple database connections
  • db connector allowing for easy commands db.open(), db.close, ...
  • improve the response time of the encrypted database by removing the internal open and close database for each sqlite query
  • moving to the latest androidx.sqlite.db.xxx
  • offering encryption for Electron platform by using @journeyapps/sqlcipher on MacOs, !!! NOT ON WINDOWS !!!
  • cleaning and aligning the code between platforms
  • allowing developers to develop typeorm or spatialite drivers.

This was discussed lengthly in issue#1 and issue#52

Refactor available for Android, iOS and Electron platforms.

The test has been achieved on:

Other frameworks will be tested later

  • Stencil

@INITIAL 🛑 (Move to branch 2.4.x)

The 2.4.x is now 🛑 NOT MAINTAINED ANYMORE 🛑.

To install it

npm i --save @capacitor-community/sqlite@initial

The test has been achieved on:

Browser Support

The plugin follows the guidelines from the Capacitor Team,

meaning that it will not work in IE11 without additional JavaScript transformations, e.g. with Babel.

Installation

npm install @capacitor-community/sqlite
npm run build
npx cap sync
npx cap add android
npx cap add ios
// npx cap add @capacitor-community/electron not working

IOS

  • on iOS, no further steps needed.

Android

  • On Android, no further steps needed.

Electron 🚧 (NOT WORKING YET)

  • On Electron, go to the Electron folder of YOUR_APPLICATION

Build & Run

npm run build
npx cap copy

IOS

npx cap open ios

Android

npx cap open android

Electron 🚧 (NOT WORKING YET)

npx cap open @capacitor-community/electron

Issues

issues

Configuration

No configuration required for this plugin

Supported methods

Name Android iOS Electron Mac Electron Windows Web
createConnection 🚧 🚧
closeConnection 🚧 🚧
isConnection 🚧 🚧
open (non-encrypted DB) 🚧 🚧
open (encrypted DB) 🚧 🚧
close 🚧 🚧
execute 🚧 🚧
executeSet 🚧 🚧
run 🚧 🚧
query 🚧 🚧
deleteDatabase 🚧 🚧
importFromJson 🚧 🚧
exportToJson 🚧 🚧
createSyncTable 🚧 🚧
setSyncDate 🚧 🚧
getSyncDate 🚧 🚧
isJsonValid 🚧 🚧
isDBExists 🚧 🚧
addUpgradeStatement 🚧 🚧
copyFromAssets 🚧 🚧
isDBOpen 🚧 🚧
isDatabase 🚧 🚧
isTableExists 🚧 🚧
getDatabaseList 🚧 🚧
addSQLiteSuffix 🚧 🚧
deleteOldDatabases 🚧 🚧
checkConnectionsConsistency 🚧 🚧
isSecretStored 🚧 🚧
setEncryptionSecret 🚧 🚧
changeEncryptionSecret 🚧 🚧

Supported SQLite Types

-Datatypes In SQLite Version 3

Documentation

API

Framework's Usage

Applications demonstrating the use of the plugin

Ionic/Angular

Ionic/React (to come later)

Ionic/Vue (to come later)

Vue (to come later)

Usage

Dependencies

The IOS and Android codes are using SQLCipher allowing for database encryption

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Jean Pierre Quéau

💻

Paul Antoine

💻

Karyfars

💻

Chriswep

📖

Nirajhinge

💻

This project follows the all-contributors specification. Contributions of any kind welcome!