Buscar..


Añadir la base de datos en tiempo real en Android

  1. Complete la instalación y configuración para conectar su aplicación a Firebase.
    Esto creará el proyecto en Firebase.

  2. Agregue la dependencia de Firebase Realtime Database a su archivo build.gradle nivel de build.gradle :

compile 'com.google.firebase:firebase-database:9.2.1'
  1. Configurar las reglas de la base de datos de Firebase

Ahora está listo para trabajar con la base de datos en tiempo real en Android.

Por ejemplo, escribe un mensaje de Hello World en la base de datos debajo de la clave de message .

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

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

Usando setValue para guardar datos

El método setValue() sobrescribe los datos en la ubicación especificada, incluidos los nodos secundarios.

Puede utilizar este método para:

  1. Pasa los tipos que corresponden a los tipos JSON disponibles de la siguiente manera:
  • Cuerda
  • Largo
  • Doble
  • Booleano
  • Mapa <Cadena, Objeto>
  • Lista
  1. Pase un objeto Java personalizado, si la clase que lo define tiene un constructor predeterminado que no toma argumentos y tiene captadores públicos para que se asignen las propiedades.

Este es un ejemplo con un CustomObject.
Primero define el objeto.

@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;
    }

A continuación, obtenga la referencia de la base de datos y establezca el valor:

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

Ejemplo para inserción de datos o recuperación de datos de Firebase

Antes de comprender, es necesario seguir alguna configuración para la integración del proyecto con firebase.

  1. Cree su proyecto en la consola Firebase y descargue el archivo google-service.json desde la consola y colóquelo en el módulo de nivel de aplicación de su proyecto. Siga el enlace para Crear proyecto en la consola.

  2. Después de esto necesitamos agregar alguna dependencia en nuestro proyecto,

  • Primero agregue la ruta de clase en nuestro nivel de proyecto gradle,

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

  • Y después de eso aplique el complemento en el nivel de aplicación gradel, escríbalo a continuación de la sección de dependencia,

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

  • Hay más dependencia que se requiere agregar en el nivel de aplicación gradle en la sección de dependencia

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

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

  • Ahora comience a insertar datos en la base de datos de base de fuego. Primero se requiere crear una instancia de

    FirebaseDatabase database = FirebaseDatabase.getInstance();

    después de la creación del objeto FirebaseDatabase, vamos a crear nuestra DatabaseReference para insertar datos en la base de datos,

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

    Aquí el student es el nombre de la tabla, si la tabla existe en la base de datos, luego inserte los datos en la tabla; de lo contrario, cree uno nuevo con el nombre del estudiante. Después de esto, puede insertar datos usando databaseReference.setValue(); funciona como siguiente,

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

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

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

    databaseReference.setValue(student);

    Aquí estoy insertando datos como hasmap. Pero también puede establecer como clase modelo,

  • Comience a recuperar datos de base de fuego. Estamos usando addListenerForSingleValueEvent para leer el valor de la base de datos,

      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) {
    
              }
          });
    

Obtener valor / s de base de fuego

  1. Crea una clase y agrega importaciones para analizar información:
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. Agregue addListenerForSingleValueEvent() a nuestra base de datos de referencia:
//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. Infle nuestra clase con información de base de onDataChange() en el evento onDataChange() :
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

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

            //...
        }
  1. Finalmente podemos obtener diferentes atributos de la clase firebase como normalmente:
//User inflated
Users user = dataSnapshot.getValue(Users.class);

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

Mejores prácticas

  1. La base de fuego admite 32 niveles secundarios diferentes, por lo que es sencillo escribir incorrectamente las referencias, para evadir esto, se crean las referencias privadas 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. El evento onCancelled() se llama cuando el usuario no tiene acceso a esta referencia por las reglas de la base de datos. Agregue el código pertinente para controlar esta excepción si lo necesita.

Para más información visite la documentación oficial.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow