Angular - Angular, Ionic, Cordova y Sqlite, Error al crear BD

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 3 puestos en Angular (en relación al último mes)
Gráfica de Angular

Angular, Ionic, Cordova y Sqlite, Error al crear BD

Publicado por Allan (1 intervención) el 16/02/2021 04:32:50
Hola, me gustaría que me ayudaran con el siguiente problema, no se si necesito permisos del dispositivo o algo así, pero mi problema es que no puedo crear la base de datos de SQLite en la carpeta que yo quiero.

Necesito crear la BD en esa ruta no solo por tenerla ubicada sino porque voy a aplicar migraciones en algunas ocasiones. La ruta default si funciona, pero no se en que ruta me está creando la base de datos.

Estoy usando Ionic 6.12.3 con cordova y angular

El dispositivo ya me pidió permisos para crear la carpeta llamada aplicación en la siguiente ruta Android->data->io.ionic.starter->files->aplicacion y la cree exitosamente, pero la base de datos Sqlite no me deja crearla. El dispositivo me muestra el siguiente error
Dejo unas capturas y el código de lo que estoy haciendo

Desde ya gracias por su ayuda

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { Injectable } from '@angular/core';
import { SQLite, SQLiteObject } from '@ionic-native/sqlite/ngx';
import { Platform, ToastController } from '@ionic/angular'
import { File } from '@ionic-native/file/ngx'
 
@Injectable({
  providedIn: 'root'
})
export class SqliteService {
 
  private rutaBd:string = ""
 
  async mensaje(msj:string)
  {
    let toastr = await this.toast.create({
      message: msj,
      duration: 5000,
      position: "middle"
    })
 
    toastr.present()
  }
 
  constructor(
    private sqlite:SQLite,
    private toast:ToastController,
    private archi:File,
    private platform:Platform
  ) {
 
    this.platform.ready().then(() => {
      if(this.platform.is("ios"))
      {
        this.rutaBd = this.archi.documentsDirectory
      }
      else
      if(this.platform.is("android"))
      {
        this.archi.checkDir(this.archi.externalDataDirectory, 'aplicacion').then(respuesta => {
          this.rutaBd = this.archi.externalDataDirectory + "/aplicacion"
        }).catch(err => {
          this.archi.createDir(this.archi.externalDataDirectory, "aplicacion", true).then(valor => {
            this.rutaBd = this.archi.externalDataDirectory + "/aplicacion"
          })
        })
        //this.rutaBd = this.archi.resolveDirectoryUrl('file:///storage/emulated/0/aplicacion')
      }
      else
      if(this.platform.is("desktop"))
      {
        this.rutaBd = 'default'
      }
    })
  }
 
  public crearBaseDatos()
  {
 
    this.sqlite.create({
      name: 'man.man',
      location: this.rutaBd
    })
      .then((db: SQLiteObject) => {
 
        db.executeSql('create table if not exists danceMoves(name VARCHAR(32))', [])
          .then(() => {
            this.mensaje("Base de datos creada exitosamente")
          })
          .catch(e => {
            this.mensaje(e)
          });
 
 
      })
      .catch(e => {
        this.mensaje(e);
        console.log(e);
      });
 
  }
}


imagen_2021-02-15_213257
ionic-error-2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder