Où Salle d'enregistrer la base de données Android?
Je suis en utilisant la Salle de la bibliothèque pour enregistrer des données dans la base de données.je veux obtenir de la base de données.
utilisé ce code
private void copyFile() {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath=getDatabasePath("photex_db.db").getAbsolutePath();
String backupDBPath = "photex_db.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
il fonctionne en simple sqlLite mais n'a pas de travail pour SALLE de Bibliothèque CHAMBRE
est-il de toute façon peut obtenir de la Base de données?
Classe pour créer une Base de données avec l'aide de la Chambre
`
@Database(entities = {ProjectDataEntity.class, SavedProjectEntity.class},
version = 2)
@TypeConverters(DateConverter.class)
public abstract class AppDatabase extends RoomDatabase {
static final String DATABASE_NAME = "photex_db";
private static AppDatabase Instance;
public abstract ProjectDataDao projectDataDao();
public abstract SavedProjectDao savedProjectDao();
public static AppDatabase getInstance(Context context) {
if (Instance == null) {
synchronized (AppDatabase.class) {
if (Instance == null) {
Instance =
Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, DATABASE_NAME)
.build();
}
}
}
return Instance;
}
}
`
- "il fonctionne en simple sqlLite" -- pas sur la plupart des appareils ou pour de nombreux utilisateurs. Jamais coder en dur des chemins. l'Utilisation
getDatabasePath()
, veuillez. "n'a pas de travail pour SALLE de Bibliothèque" -- si vous utilisezgetDatabasePath()
, il devrait fonctionner avec la Salle. Si vous rencontrez des problèmes, fournir un un minimum de reproductibles exemple, qui devrait inclure leRoomDatabase
où vous de fournir les informations à la Chambre à propos de la base de données à utiliser. - j'ai essayé getDatabasePath() ça n'aide pas 🙁
- Ensuite, comme je l'ai écrit, veuillez fournir une un minimum de reproductibles exemple, qui devrait inclure le
RoomDatabase
où vous de fournir les informations à la Chambre à propos de la base de données à utiliser. - J'ai mis à jour la question ,voir si c'est ce que vous entendez
- Vous pouvez consulter this réponse. Peut-être que vous venez de créer une base de données de manière incorrecte.
Vous devez vous connecter pour publier un commentaire.
Ici, vous essayez d'ouvrir
photoex_db
.Ici, vous êtes en train d'essayer de lire
photex_db.db
.Ce ne sont pas les mêmes.
Vous pouvez envisager d'utiliser
DATABASE_NAME
de manière cohérente, plutôt que seulement à certains endroits.getDatabasePath()
. Je veux dire, qui classe fournit-il?Context
.Il y avait une petite erreur dans mon code ,après la correction de son travail bien
dans Android Studio il y a une section appelée "Appareil de l'Explorateur de Fichiers", en bas à droite. Dans cette section, vous pouvez explorer tous les fichiers
(vous ne pouvez pas voir dans un simple explorateur de fichiers app parce que vous avez besoin pour exécuter la racine).
Assurez-vous que l'émulateur est celui que vous travaillez avec.
Dans ce explorer, vous devez aller à "données" -> "données", recherchez le nom du package de votre application et la prochaine étape est de trouver "base de données" de l'entrée, dans ce dossier, il est de votre Chambre de la base de données.
Essayer ce code :
Il sera de retour le chemin d'accès à votre base de données. Utilisez ce chemin exact pour créer le fichier où vous voulez copier. Il sera certainement le travail que travaillé pour moi.