@capacitor-community/sqlite v5.7.3-3
Maintainers
Maintainer | GitHub | Social |
---|---|---|
Quéau Jean Pierre | jepiqueau |
Installation
npm install @capacitor-community/sqlite
npx cap sync
On iOS, no further steps are needed.
On Android, register the plugin in your main activity:
import com.getcapacitor.community.database.sqlite.CapacitorSQLite; public class MainActivity extends BridgeActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Initializes the Bridge this.init( savedInstanceState, new ArrayList<Class<? extends Plugin>>() { { // Additional plugins you've installed go here // Ex: add(TotallyAwesomePlugin.class); add(CapacitorSQLite.class); } } ); } }
On Electron, go to the Electron folder of YOUR_APPLICATION
npm install --save sqlite3 npm install --save-dev @types/sqlite3 npm install --save-dev electron-rebuild
Modify the Electron package.json file by adding a script "postinstall"
"scripts": { "electron:start": "electron ./", "postinstall": "electron-rebuild -f -w sqlite3" },
Execute the postinstall script
npm run postinstall
Go back in the main folder of your application Add a script in the index.html file of your application in the body tag
- case databases under
YourApplication/Electron/
<body> <app-root></app-root> <script> try { if ( process && typeof process.versions.electron === 'string' && process.versions.hasOwnProperty('electron') ) { const sqlite3 = require('sqlite3'); const fs = require('fs'); const path = require('path'); window.sqlite3 = sqlite3; window.fs = fs; window.path = path; } } catch { console.log("process doesn't exists"); } </script> </body>
- case databases under
User/Databases/APP_NAME/
<body> <app-root></app-root> <script> try { if ( process && typeof process.versions.electron === 'string' && process.versions.hasOwnProperty('electron') ) { const sqlite3 = require('sqlite3'); const fs = require('fs'); const path = require('path'); const homeDir = require('os').homedir(); window.sqlite3 = sqlite3; window.fs = fs; window.path = path; window.appName = 'YOUR_APP_NAME'; window.homeDir = homeDir; } } catch { console.log("process doesn't exists"); } </script> </body>
Then build YOUR_APPLICATION
npm run build npx cap copy npx cap copy web npx cap open android npx cap open ios npx cap open electron
- case databases under
Configuration
No configuration required for this plugin
Supported methods
Name | Android | iOS | Electron | Web |
---|---|---|---|---|
open (non-encrypted DB) | ✅ | ✅ | ✅ | ❌ |
open (encrypted DB) | ✅ | ✅ | ❌ | ❌ |
close | ✅ | ✅ | ✅ | ❌ |
execute | ✅ | ✅ | ✅ | ❌ |
executeSet | ✅ | ✅ | ✅ | ❌ |
run | ✅ | ✅ | ✅ | ❌ |
query | ✅ | ✅ | ✅ | ❌ |
deleteDatabase | ✅ | ✅ | ✅ | ❌ |
importFromJson | ✅ | ✅ | ✅ | ❌ |
exportToJson | ✅ | ✅ | ✅ | ❌ |
createSyncTable | ✅ | ✅ | ✅ | ❌ |
setSyncDate | ✅ | ✅ | ✅ | ❌ |
isJsonValid | ✅ | ✅ | ✅ | ❌ |
isDBExists | ✅ | ✅ | ✅ | ❌ |
Documentation
ImportExportJson_Documentation
Applications demonstrating the use of the plugin
Ionic/Angular
Ionic/React
Usage
In your code
import { Plugins } from '@capacitor/core';
import * as CapacitorSQLPlugin from '@capacitor-community/sqlite';
const { CapacitorSQLite,Device } = Plugins;
@Component( ... )
export class MyPage {
_sqlite: any;
...
async ngAfterViewInit()() {
const info = await Device.getInfo();
if (info.platform === "ios" || info.platform === "android") {
this._sqlite = CapacitorSQLite;
} else if(info.platform === "electron") {
this._sqlite = CapacitorSQLPlugin.CapacitorSQLiteElectron;
} else {
this._sqlite = CapacitorSQLPlugin.CapacitorSQLite;
}
}
async testSQLitePlugin() {
let result:any = await this._sqlite.open({database:"testsqlite"});
retOpenDB = result.result;
if(retOpenDB) {
// Create Tables if not exist
let sqlcmd: string = `
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY NOT NULL,
email TEXT UNIQUE NOT NULL,
name TEXT,
FirstName TEXT,
age INTEGER,
MobileNumber TEXT
);
PRAGMA user_version = 1;
COMMIT TRANSACTION;
`;
var retExe: any = await this._sqlite.execute({statements:sqlcmd});
console.log('retExe ',retExe.changes.changes);
// Insert some Users
sqlcmd = `
BEGIN TRANSACTION;
DELETE FROM users;
INSERT INTO users (name,email,age) VALUES ("Whiteley","Whiteley.com",30);
INSERT INTO users (name,email,age) VALUES ("Jones","Jones.com",44);
COMMIT TRANSACTION;
`;
retExe = await this._sqlite.execute({statements:sqlcmd});
// will print the changes 2 in that case
console.log('retExe ',retExe.changes.changes);
// Select all Users
sqlcmd = "SELECT * FROM users";
const retSelect: any = await this._sqlite.query({statement:sqlcmd,values:[]});
console.log('retSelect.values.length ',retSelect.values.length);
const row1: any = retSelect.values[0];
console.log("row1 users ",JSON.stringify(row1))
const row2: any = retSelect.values[1];
console.log("row2 users ",JSON.stringify(row2))
// Insert a new User with SQL and Values
sqlcmd = "INSERT INTO users (name,email,age) VALUES (?,?,?)";
let values: Array<any> = ["Simpson","Simpson@example.com",69];
var retRun: any = await this._sqlite.run({statement:sqlcmd,values:values});
console.log('retRun ',retRun.changes.changes,retRun.changes.lastId);
// Select Users with age > 35
sqlcmd = "SELECT name,email,age FROM users WHERE age > ?";
retSelect = await this._sqlite.query({statement:sqlcmd,values:["35"]});
console.log('retSelect ',retSelect.values.length);
// Execute a Set of raw SQL Statements
let set: Array<any> = [
{ statement:"INSERT INTO users (name,FirstName,email,age,MobileNumber) VALUES (?,?,?,?,?);",
values:["Blackberry","Peter","Blackberry@example.com",69,"4405060708"]
},
{ statement:"INSERT INTO users (name,FirstName,email,age,MobileNumber) VALUES (?,?,?,?,?);",
values:["Jones","Helen","HelenJones@example.com",42,"4404030201"]
},
{ statement:"INSERT INTO users (name,FirstName,email,age,MobileNumber) VALUES (?,?,?,?,?);",
values:["Davison","Bill","Davison@example.com",45,"4405162732"]
},
{ statement:"INSERT INTO users (name,FirstName,email,age,MobileNumber) VALUES (?,?,?,?,?);",
values:["Brown","John","Brown@example.com",35,"4405243853"]
},
{ statement:"UPDATE users SET age = ? , MobileNumber = ? WHERE id = ?;",
values:[51,"4404030237",2]
}
];
result = await this._sqlite.executeSet({set:set});
console.log("result.changes.changes ",result.changes.changes)
if(result.changes.changes != 5) resolve(false);
...
}
}
...
}
Dependencies
The IOS and Android codes are using SQLCipher allowing for database encryption The Electron code use sqlite3
4 days ago
11 days ago
17 days ago
17 days ago
1 month ago
1 month ago
1 month ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
8 months ago
9 months ago
10 months ago
10 months ago
11 months ago
7 months ago
7 months ago
8 months ago
6 months ago
7 months ago
7 months ago
7 months ago
9 months ago
9 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
11 months ago
12 months ago
12 months ago
1 year ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago