Recherche…


Ajouter la base de données en temps réel dans Android

  1. Terminez l' installation et la configuration pour connecter votre application à Firebase.
    Cela créera le projet dans Firebase.

  2. Ajoutez la dépendance pour la base de données Firebase Realtime à votre fichier build.gradle niveau du build.gradle :

compile 'com.google.firebase:firebase-database:9.2.1'
  1. Configurer les règles de base de données Firebase

Vous êtes maintenant prêt à travailler avec la base de données Realtime sous Android.

Par exemple, vous écrivez un message Hello World dans la base de données sous la clé de message .

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

Utiliser setValue pour enregistrer des données

La méthode setValue() remplace les données à l'emplacement spécifié, y compris les nœuds enfants.

Vous pouvez utiliser cette méthode pour:

  1. Les types de transfert correspondant aux types JSON disponibles sont les suivants:
  • Chaîne
  • Longue
  • Double
  • Booléen
  • Carte <String, Object>
  • liste
  1. Transmettez un objet Java personnalisé, si la classe qui le définit a un constructeur par défaut qui ne prend aucun argument et possède des getters publics pour les propriétés à affecter.

Ceci est un exemple avec un CustomObject.
Définissez d'abord l'objet.

@IgnoreExtraProperties
public class User {

    public String username;
    public String email;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }

Ensuite, obtenez la référence de la base de données et définissez la valeur:

   User user = new User(name, email);
   DatabaseReference mDatabase mDatabase = FirebaseDatabase.getInstance().getReference();
   mDatabase.child("users").child(userId).setValue(user);

Exemple d'insertion de données ou de récupération de données à partir de Firebase

Avant de comprendre, il est nécessaire de suivre certaines configurations pour l'intégration du projet avec Firebase.

  1. Créez votre projet dans Firebase Console et téléchargez le fichier google-service.json à partir de la console et placez-le dans le module de niveau application de votre projet. Suivez le lien pour Create Project dans la console.

  2. Après cela, nous avons besoin d'ajouter une dépendance dans notre projet,

  • Tout d'abord, ajoutez le chemin de classe dans notre niveau de projet,

    classpath 'com.google.gms:google-services:3.0.0'

  • Et après avoir appliqué le plug-in au niveau de l'application, écrivez-le ci-dessous de la section sur les dépendances,

    apply plugin: 'com.google.gms.google-services

  • Il y a pour plus de dépendance qui nécessitent d'ajouter dans le niveau de l'application gradle dans la section de dépendance

    compile 'com.google.firebase:firebase-core:9.0.2'

    compile 'com.google.firebase:firebase-database:9.0.2'

  • Maintenant, commencez à insérer des données dans la base de données firebase, vous devez d'abord créer une instance de

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    après la création de l'objet FirebaseDatabase, nous allons créer notre DatabaseReference pour les données d'insertion dans la base de données,

    DatabaseReference databaseReference = database.getReference().child("student");

    Ici, student est le nom de la table si la table existe dans la base de données, puis insérer les données dans la table sinon en créer une nouvelle avec le nom de l'étudiant, après cela vous pouvez insérer des données en utilisant databaseReference.setValue(); fonction comme suit,

    HashMap<String,String> student=new HashMap<>();

    student.put("RollNo","1");

    student.put("Name","Jayesh");

    databaseReference.setValue(student);

    Ici, j'insère des données en tant que hasmap Mais vous pouvez définir comme classe de modèle également,

  • Commencez par récupérer les données de Firebase, nous utilisons ici addListenerForSingleValueEvent pour la valeur de lecture de la base de données,

      senderRefrence.addListenerForSingleValueEvent(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {
                  if(dataSnapshot!=null && dataSnapshot.exists()){
                      HashMap<String,String> studentData=dataSnapshot.getValue(HashMap.class);
                      Log.d("Student Roll Num "," : "+studentData.get("RollNo"));
                      Log.d("Student Name "," : "+studentData.get("Name"));
                  }
              }
    
              @Override
              public void onCancelled(DatabaseError databaseError) {
    
              }
          });
    

Obtenir la valeur / s de la base de feu

  1. Créez une classe et ajoutez des importations pour analyser les informations:
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.IgnoreExtraProperties;

//Declaration of firebase references
private DatabaseReference mDatabase;

//Declaration of firebase atributtes
public String uID;
public String username;
public String email;

@IgnoreExtraProperties
public class User {

    //Default constructor
    public User() {

        //Default constructor required for calls to DataSnapshot.getValue(User.class)
        mDatabase = FirebaseDatabase.getInstance().getReference();

        //...
    }

    //...
}
  1. Ajoutez addListenerForSingleValueEvent() à notre référence de base de données:
//Add new imports
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;

//...

public void getUser(String uID){

    //The uID it's unique id generated by firebase database
    mDatabase.child("users").child(uID).addListenerForSingleValueEvent(
            new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // ...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
            }
    });
}
  1. Gonflez notre classe avec des informations onDataChange() dans l’ onDataChange() :
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //Inflate class with dataSnapShot
            Users user = dataSnapshot.getValue(Users.class);

            //...
        }
  1. Enfin, nous pouvons obtenir différents attributs à partir de la classe Firebase:
//User inflated
Users user = dataSnapshot.getValue(Users.class);

//Get information
this.uID = user.uID;
this.username = user.username;
this.email = user.email;

Les meilleures pratiques

  1. La base de données prend en charge 32 niveaux d’enfant différents, puis il est facile d’écrire des références erronées, pour éviter de créer des références privées finales:
//Declaration of firebase references
//...
final private DatabaseReference userRef = mDatabase.child("users").child("premium").child("normal").getRef();

//...

public void getUser(String uID){

    //Call our reference
    userRef.child(uID).addListenerForSingleValueEvent(
        new ValueEventListener () {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // ...
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // Getting Post failed, log a message
            }
    });
}
  1. L' onCancelled() est appelé lorsque l'utilisateur n'a pas accès à cette référence par des règles de base de données. Ajoutez le code pertinent pour contrôler cette exception si vous en avez besoin.

Pour plus d'informations visitez la documentation officielle



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow