如何使用Sqlite with ionic 2 rc.0?
发布时间:2020-12-12 18:58:29 所属栏目:百科 来源:网络整理
导读:我想知道如何使用Sonicite和Ionic 2 rc.o发布.我发现它很难,因为没有最新版本的例子我被卡住了.网上似乎没有任何更新.支持的例子为Sqlite会很有用. 先感谢您. 解决方法 1)首先,导航到项目的根文件夹并添加插件: $ionic plugin add cordova-sqlite-storage$n
我想知道如何使用Sonicite和Ionic 2 rc.o发布.我发现它很难,因为没有最新版本的例子我被卡住了.网上似乎没有任何更新.支持的例子为Sqlite会很有用.
先感谢您. 解决方法1)首先,导航到项目的根文件夹并添加插件:$ionic plugin add cordova-sqlite-storage $npm install --save @ionic-native/sqlite 2)在项目中创建一个新的提供者(在这个例子中,称为SqlStorage): $ionic g provider sqlStorage 3)我想在app.component.ts中添加导入以在启动时初始化插件,而不是强制: import {SqlStorage} from '../providers/sql-storage'; ... ... constructor(public sqlStorage: SqlStorage){} 4)向app.module.ts添加条目,必填: import { SQLite } from '@ionic-native/sqlite'; import { SqlStorage } from '../providers/sql-storage'; ... ... providers: [SQLite,SqlStorage] 5)定义sql-storage.ts提供程序: import { Injectable } from '@angular/core'; import { Platform } from 'ionic-angular'; import { SQLite,SQLiteObject } from '@ionic-native/sqlite'; @Injectable() export class SqlStorage { storage: any; DB_NAME: string = '__ionicstorage'; constructor(public platform: Platform,public sqlite: SQLite) { this.platform.ready().then(() => { this.sqlite.create({ name: this.DB_NAME,location: 'default' }) .then((db: SQLiteObject) => { this.storage = db; this.tryInit(); }); }); } tryInit() { this.query('CREATE TABLE IF NOT EXISTS kv (key text primary key,value text)') .catch(err => { console.error('Unable to create initial storage tables',err.tx,err.err); }); } /** * Perform an arbitrary SQL operation on the database. Use this method * to have full control over the underlying database through SQL operations * like SELECT,INSERT,and UPDATE. * * @param {string} query the query to run * @param {array} params the additional params to use for query placeholders * @return {Promise} that resolves or rejects with an object of the form * { tx: Transaction,res: Result (or err)} */ query(query: string,params: any[] = []): Promise<any> { return new Promise((resolve,reject) => { try { this.storage.transaction((tx: any) => { tx.executeSql(query,params,(tx: any,res: any) => resolve({ tx: tx,res: res }),err: any) => reject({ tx: tx,err: err })); },(err: any) => reject({ err: err })); } catch (err) { reject({ err: err }); } }); } /** GET the value in the database identified by the given key. */ get(key: string): Promise<any> { return this.query('select key,value from kv where key = ? limit 1',[key]) .then(data => { if (data.res.rows.length > 0) { return data.res.rows.item(0).value; } }); } /** SET the value in the database for the given key. */ set(key: string,value: string): Promise<any> { return this.query('insert into kv(key,value) values (?,?)',[key,value]); } /** REMOVE the value in the database for the given key. */ remove(key: string): Promise<any> { return this.query('delete from kv where key = ?',[key]); } } 6)在.ts页面中: import {SqlStorage} from '../../providers/sql-storage'; export class ExamplePage { constructor(public sqlStorage: SqlStorage) { // this.sqlStorage.query(...); // this.sqlStorage.get(key).then(data => { // console.log(data); // } //... } } 信用:https://github.com/NickStemerdink有一些个人变化. 编辑:仍然适用于Ionic v3.0.1(2017-04-06) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |