美文网首页ionic开发Ios@IONIC
ionic项目中sqlite的简单运用

ionic项目中sqlite的简单运用

作者: HiUSB | 来源:发表于2019-11-29 17:31 被阅读0次

    1. 创建一个ionic模板项目

    $ionic start IonicDemo tabs && cd ./IonicDemo
    $ionic cordova platform add ios
    

    2. 安装插件

    $ionic cordova plugin add cordova-sqlite-storage
    $npm i -S @ionic-native/sqlite@^4.0.0 //指定版本号兼容ionic3
    

    3. 修改文件

    替换/IonicDemo/src/app/app.module.ts为

    import { NgModule, ErrorHandler } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
    import { MyApp } from './app.component';
    import { SQLite } from '@ionic-native/sqlite';
    import { AboutPage } from '../pages/about/about';
    import { ContactPage } from '../pages/contact/contact';
    import { HomePage } from '../pages/home/home';
    import { TabsPage } from '../pages/tabs/tabs';
    
    import { StatusBar } from '@ionic-native/status-bar';
    import { SplashScreen } from '@ionic-native/splash-screen';
    
    @NgModule({
      declarations: [
        MyApp,
        AboutPage,
        ContactPage,
        HomePage,
        TabsPage
      ],
      imports: [
        BrowserModule,
        IonicModule.forRoot(MyApp)
      ],
      bootstrap: [IonicApp],
      entryComponents: [
        MyApp,
        AboutPage,
        ContactPage,
        HomePage,
        TabsPage
      ],
      providers: [
        SQLite,
        StatusBar,
        SplashScreen,
        {provide: ErrorHandler, useClass: IonicErrorHandler}
      ]
    })
    export class AppModule {}
    

    替换/IonicDemo/src/pages/about/about.html为

    <ion-header>
      <ion-navbar>
        <ion-title>
          About
        </ion-title>
      </ion-navbar>
    </ion-header>
    
    <ion-content padding>
    
      <button ion-button (click)="initDataBase()">初始化数据库</button>
      
      <button ion-button (click)="insertData('Tom', '12345678910')">插入数据</button> 
      
      <button ion-button (click)="updateData('Tom', '12312312312')">更新数据</button> 
    
      <button ion-button (click)="deleteData('Tom')">删除数据</button> 
    
      <button ion-button (click)="queryData('Tom')">查询数据</button> 
    
    </ion-content>
    

    替换/IonicDemo/src/pages/about/about.ts为

    import { Component } from '@angular/core';
    import { NavController, ToastController } from 'ionic-angular';
    import { SQLite, SQLiteObject } from '@ionic-native/sqlite';
    
    @Component({
      selector: 'page-about',
      templateUrl: 'about.html'
    })
    
    export class AboutPage {
    
      database: SQLiteObject;
    
      constructor(public navCtrl: NavController,private sqlite:SQLite,public toastCtrl : ToastController) {
    
      }
      /*
        //页面加载时调用
        ionViewDidLoad() {
          this.initDataBase();
        }
      
        //页面即将进入时调用
        ionViewWillEnter() {
          this.initDataBase();
        }
      */
        //创建数据库
      initDataBase(){
        this.sqlite.create({
          name: 'data.db',
          location: 'default'
        })
          .then((db: SQLiteObject) => {
            db.executeSql('create table if not exists person(id integer primary key autoincrement,name varchar(20),phone varchar(11))', [])
              .then(() => console.log('Executed SQL'))
              .catch(e => console.log(e));
    
            this.database = db;
          });
      }
    
      //增
      insertData (name: string, phone: string) {
          this.database.executeSql('insert into person(name,phone) values(?,?)', [name, phone])
          .then(() => {
              let toast = this.toastCtrl.create({
              message: 'insertData success',
              duration: 2000,
              position: 'top'
              });
            toast.present(toast);
        
          })
          .catch(e => console.log(e))
      }
    
      //改
      updateData(name: string, phone: string) {
            this.database.executeSql('update person set phone=?  where name=?', [phone, name])
          .then(() => {
              let toast = this.toastCtrl.create({
              message: 'updateData success',
              duration: 2000,
              position: 'top'
              });
            toast.present(toast);
        
          })
          .catch(e => console.log(e))
      }
    
      //删
      deleteData(name: string) {
            this.database.executeSql('delete from person where name=?', [name])
          .then(() => {
              let toast = this.toastCtrl.create({
              message: 'deleteData success',
              duration: 2000,
              position: 'top'
              });
            toast.present(toast);
        
          })
          .catch(e => console.log(e))
      }
    
      //查
      queryData(name: string) {
          this.database.executeSql("select phone from person where name=?", [name]).then((data) => {
              let toast;
              if (data.rows.length != 0) {
                  toast = this.toastCtrl.create({
                      message: '数据已存在',
                      duration: 2000,
                      position: 'top'
                  });
                  toast.present(toast);
            } else {
                  toast = this.toastCtrl.create({
                      message: '数据不存在',
                      duration: 2000,
                      position: 'top'
                  });
            }
            toast.present(toast);
        });
      }
    }
    

    4. 编译项目

    $ionic build --prod
    $ionic cordova prepare ios
    

    5. 在Xcode中运行项目

    它应该是这样的


    Simulator Screen Shot - iPhone 11 Pro Max - 2019-11-29 at 01.17.08.png

    在模拟器about页面中可以看到几个菜单,在点击"初始化数据库"之后就可以增删改查了!

    控制台会打印沙盒中DB的路径,可以查看结果是否正确!

    Just do it!

    相关文章

      网友评论

        本文标题:ionic项目中sqlite的简单运用

        本文链接:https://www.haomeiwen.com/subject/lxbgwctx.html