1
resposta

Local de salvamento do banco de dados

Aula 02 - Lidando com dados Atividade - Abrindo o banco de dados

No código abaixo, "join(await getDatabasesPath(), 'task.db')" fica responsável para determinar o melhor caminho para salvar o banco de dados do app no smartphone(no Android, por exemplo).

1 - Como eu faria para localizar a pasta que foi salva no smartphone, após instalar o apk no mesmo, supondo que eu quisesse manipulá-la, acessá-la manualmente ou fazer uma cópia de backup etc no PC ou outro lugar?

2 - Qual seria a extensão do arquivo do banco de dados na aplicação em questão?

3 - É possível determinar um caminho específico escolhido por mim, no app? (imaginando que eu saiba quais os locais possíveis, claro)

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';

Future<Database> getDatabase() async {
  final String path = join(await getDatabasesPath(), 'task.db');
  return openDatabase(path, onCreate: (db, version) {
    db.execute(tableSql);
  }, version: 1,);
}
const String tableSql = 'CREATE TABLE $_tablename('
    '$_name TEXT, '
    '$_difficulty INTEGER, '
    '$_image TEXT)';

const String _tablename = 'taskTable';
const String _name = 'name';
const String _difficulty = 'difficulty';
const String _image = 'image';
1 resposta

Olá Julio, tudo bem?

Vamos lá, vou tentar esclarecer suas dúvidas:

1 - O local exato onde o banco de dados é armazenado pode variar dependendo do dispositivo e da versão do sistema operacional. No Android, geralmente, os bancos de dados são armazenados no diretório /data/data/<package_name>/databases. No entanto, esse diretório não é facilmente acessível sem privilégios de root. Se você precisa fazer backup ou manipular o banco de dados manualmente, recomendo que você implemente essa funcionalidade no próprio aplicativo (por exemplo, adicionar uma opção para exportar o banco de dados para um local acessível como o armazenamento externo).

2 - A extensão do arquivo do banco de dados é .db, como você pode ver na linha final String path = join(await getDatabasesPath(), 'task.db'); do seu código.

3 - Sim, é possível determinar um caminho específico para o banco de dados. No entanto, você precisa ter cuidado para garantir que o caminho seja válido e acessível. Você pode fazer isso substituindo getDatabasesPath() por seu próprio caminho. Por exemplo:

final String path = join(seu_caminho_escolhido, 'task.db');

Lembre-se de que o caminho que você escolher deve ser um local onde seu aplicativo tem permissão para ler e escrever dados. Além disso, o caminho deve existir, caso contrário, você terá que criar os diretórios necessários.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.