加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读