Crear Conexion SQLite Ionic V4


En este post se vera como realizar una conexion sqlite para poder usarlas en varios servicios.


Antes de comenzar debemos importar los siguientes modulos:

ionic cordova plugin add uk.co.workingedge.cordova.plugin.sqliteporternpm install @ionic-native/sqlite-porter
ionic cordova plugin add cordova-sqlite-storagenpm install @ionic-native/sqlite

Entramos a nuestro app.module.ts e importamos los siguientes plugins


import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy, NavParams } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { SQLitePorter } from '@ionic-native/sqlite-porter/ngx';
import { SQLite } from '@ionic-native/sqlite/ngx';
import { HttpClientModule } from '@angular/common/http';


@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [ HttpClientModule,BrowserModule, IonicModule.forRoot(), AppRoutingModule,
],
providers: [
StatusBar,
SplashScreen,
SQLite,
SQLitePorter,

{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
],
bootstrap: [AppComponent]
})
export class AppModule {}
Creamos un servicio con el nombre conexión usando el siguiente comando
ionic g service services/conexion/conexion


Creamos un archivo manualmente dentro de la carpeta assets llamado seed.sql


Abrimos el archivo seed.sql y dentro de este crearemos nuestras tablas y podremos crear algunos registros tambien.


Entramos a nuestro servicio conexión e importamos los siguientes plugins


En el constructor declaramos lo siguiente:



Encima del constructor declaramos las siguientes variables:


Comenzamos a crear las funciones:


La funcion inicializar() se encarga de cargar la semilla y asignarle un nombe a la BD que en este caso seria el archivo .sql que creamos al principio, se complementa con la funcion seedDatabase() la cual es la encargada de llamar al archivo seed.sql.
La funcion getDatabaseState() se encarga de conocer el estado de la bd en caso de estar lista para su uso.
La funcion sqliteObject retorna el objeto database.


Para hacer uso de esto se llama en otro servicio de la siguiente manera:

Se llama al servicio
import { ConexionService } from '../conexion/conexion.service';
Y luego en el constructor se asigna una variable
constructor(
private conexion: ConexionService) { }
Debajo del constructor se crea la siguiente función:

getdatabase() {
return this.conexion.sqliteObject();
}
Estas funciones llaman a las otras funciones que están en el servicio conexión.

Para hacer uso de estas funciones para realizar consultas se llama a la funcion getdatabase() de esta manera:

return this.getdatabase().executeSql('SELECT * FROM usuarios', []).then(data => {
   let array: Usuarios[] = [];
      if (data.rows.length > 0){
         for (var i = 0; i< data.rows.length; i++){
            array.push({
               idusuario.rows.item(i).idusuario,
               nombre.rows.item(i).nombre,
          });
       }
    }
    this.usuarios.next(array);
  });
}

Comentarios