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
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);
});
}
}
Valora esta pregunta
0