¿Cómo instalar y agregar datos a la base de datos de Realm en Android?

Realm Database es un servicio proporcionado por MongoDb que se utiliza para almacenar datos en el dispositivo de los usuarios localmente. Con la ayuda de estos datos, se pueden almacenar fácilmente en los dispositivos de los usuarios y se puede acceder a ellos fácilmente. Podemos utilizar esta base de datos para almacenar datos en el propio dispositivo del usuario. Esta es una serie de 4 artículos en los que vamos a realizar la operación CRUD (Crear, Leer, Actualizar y Eliminar) básica con Realm Database en Android. Vamos a cubrir los siguientes 4 artículos en esta serie:

  1. ¿Cómo instalar y agregar datos a la base de datos de Realm en Android?
  2. ¿Cómo leer datos de la base de datos Realm en Android?
  3. ¿Cómo actualizar los datos a la base de datos de Realm en Android?
  4. ¿Cómo eliminar datos en la base de datos Realm en Android?

En este artículo, veremos cómo instalar y agregar datos a Realm Database en Android. 

¿Cómo se almacenan los datos en la base de datos de Realm?  

Los datos se almacenan en la base de datos de Realm en forma de tablas. Cuando almacenamos estos datos en nuestra base de datos Realm, se organizan en forma de tablas que son similares a las de una hoja de Excel. A continuación se muestra la representación de nuestra base de datos Realm que estamos almacenando en nuestra base de datos Realm. 

¿Qué vamos a construir en este artículo?

Construiremos una aplicación simple en la que agregaremos datos a la base de datos de Realm. Crearemos una base de datos para agregar nombres de cursos, descripciones de cursos y duración del curso. Estaremos guardando todos estos datos en nuestra base de datos Realm. A continuación se muestra un video de muestra para tener una idea de lo que vamos a hacer en este artículo. Tenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Java .  

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: Agregar dependencia en la sección de dependencias en el archivo build.gradle a nivel de proyecto

Vaya a la aplicación > Gradle Scripts > build.gradle (Proyecto) y agregue la dependencia de classpath en la sección de dependencias. Puede llegar a ver la dependencia en la siguiente sección. 

dependencies {
        classpath "com.android.tools.build:gradle:4.1.2"
        
        // add below dependency
        classpath "io.realm:realm-gradle-plugin:10.3.1"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
}

Después de agregar esto, ahora navega a build.gradle (Módulo) y agrega el siguiente código. Agregue el complemento encima de este archivo. 

apply plugin: 'realm-android'     

Después de eso, agregue el siguiente código sobre la sección de dependencias. 

realm {
    syncEnabled = true
}

Ahora sincronice su proyecto, y ahora avanzaremos hacia la creación de una nueva clase Java. A continuación se muestra el código completo para el archivo build.gradle (Módulo):

Java

plugins {
    id 'com.android.application'
}
 
apply plugin: 'realm-android'
 
android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"
    ndkVersion '21.3.6528147'
 
    defaultConfig {
        applicationId "com.example.realm"
        minSdkVersion 23
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
 
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
 
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
 
realm {
    syncEnabled = true
}
 
dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

Paso 3: crear una nueva clase Java para inicializar realmDatabase 

Navegue a la aplicación > java > el nombre del paquete de su aplicación > haga clic con el botón derecho en él > Nuevo > clase Java y asígnele el nombre RealmDb y agréguele el siguiente código. 

Java

import android.app.Application;
 
import io.realm.Realm;
import io.realm.RealmConfiguration;
 
public class RealmDb extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
         
        // on below line we are
        // initializing our realm database.
        Realm.init(this);
         
        // on below line we are setting realm configuration
        RealmConfiguration config =
                new RealmConfiguration.Builder()
                        // below line is to allow write
                        // data to database on ui thread.
                        .allowWritesOnUiThread(true)
                        // below line is to delete realm
                        // if migration is needed.
                        .deleteRealmIfMigrationNeeded()
                        // at last we are calling a method to build.
                        .build();
        // on below line we are setting
        // configuration to our realm database.
        Realm.setDefaultConfiguration(config);
    }
}

Paso 4: Definición de esta clase en el archivo AndroidManifest.xml

Vaya a la aplicación > al archivo AndroidManifest.xml y dentro de la etiqueta <aplicación> agregue la siguiente línea. 

android:nombre=”.RealmDb”

Ahora avanzaremos hacia el trabajo con activity_main.xml. 

Paso 5: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo  activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
 
    <!--Edit text to enter course name-->
    <EditText
        android:id="@+id/idEdtCourseName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:hint="Enter course Name" />
 
    <!--edit text to enter course duration-->
    <EditText
        android:id="@+id/idEdtCourseDuration"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:hint="Enter Course Duration" />
 
    <!--edit text to display course tracks-->
    <EditText
        android:id="@+id/idEdtCourseTracks"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:hint="Enter Course Tracks" />
 
    <!--edit text for course description-->
    <EditText
        android:id="@+id/idEdtCourseDescription"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:hint="Enter Course Description" />
 
    <!--button for adding new course-->
    <Button
        android:id="@+id/idBtnAddCourse"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="Add Course"
        android:textAllCaps="false" />
 
</LinearLayout>

Paso 6: Crear una clase modal para almacenar nuestros datos

Navegue a la aplicación > java > el nombre del paquete de su aplicación > haga clic con el botón derecho en él > Nuevo > clase Java y asígnele el nombre DataModal y agréguele el siguiente código. 

Java

import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;
 
public class DataModal extends RealmObject {
    // on below line we are creating our variables
    // and with are using primary key for our id.
    @PrimaryKey
    private long id;
    private String courseName;
    private String courseDescription;
    private String courseTracks;
    private String courseDuration;
 
    // on below line we are
    // creating an empty constructor.
    public DataModal() {
    }
 
    // below line we are
    // creating getter and setters.
    public String getCourseTracks() {
        return courseTracks;
    }
 
    public void setCourseTracks(String courseTracks) {
        this.courseTracks = courseTracks;
    }
 
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    public String getCourseName() {
        return courseName;
    }
 
    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }
 
    public String getCourseDescription() {
        return courseDescription;
    }
 
    public void setCourseDescription(String courseDescription) {
        this.courseDescription = courseDescription;
    }
 
    public String getCourseDuration() {
        return courseDuration;
    }
 
    public void setCourseDuration(String courseDuration) {
        this.courseDuration = courseDuration;
    }
}

Paso 7: trabajar con el archivo MainActivity.java

Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
import androidx.appcompat.app.AppCompatActivity;
 
import io.realm.Realm;
 
public class MainActivity extends AppCompatActivity {
 
    // creating variables for our edit text
    private EditText courseNameEdt, courseDurationEdt, courseDescriptionEdt, courseTracksEdt;
    private Realm realm;
     
    // creating a strings for storing
    // our values from edittext fields.
    private String courseName, courseDuration, courseDescription, courseTracks;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        // initializing our edittext and buttons
        realm = Realm.getDefaultInstance();
        courseNameEdt = findViewById(R.id.idEdtCourseName);
        courseDescriptionEdt = findViewById(R.id.idEdtCourseDescription);
        courseDurationEdt = findViewById(R.id.idEdtCourseDuration);
         
        // creating variable for button
        Button submitCourseBtn = findViewById(R.id.idBtnAddCourse);
        courseTracksEdt = findViewById(R.id.idEdtCourseTracks);
        submitCourseBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 
                // getting data from edittext fields.
                courseName = courseNameEdt.getText().toString();
                courseDescription = courseDescriptionEdt.getText().toString();
                courseDuration = courseDurationEdt.getText().toString();
                courseTracks = courseTracksEdt.getText().toString();
                 
                // validating the text fields if empty or not.
                if (TextUtils.isEmpty(courseName)) {
                    courseNameEdt.setError("Please enter Course Name");
                } else if (TextUtils.isEmpty(courseDescription)) {
                    courseDescriptionEdt.setError("Please enter Course Description");
                } else if (TextUtils.isEmpty(courseDuration)) {
                    courseDurationEdt.setError("Please enter Course Duration");
                } else if (TextUtils.isEmpty(courseTracks)) {
                    courseTracksEdt.setError("Please enter Course Tracks");
                } else {
                    // calling method to add data to Realm database..
                    addDataToDatabase(courseName, courseDescription, courseDuration, courseTracks);
                    Toast.makeText(MainActivity.this, "Course added to database..", Toast.LENGTH_SHORT).show();
                    courseNameEdt.setText("");
                    courseDescriptionEdt.setText("");
                    courseDurationEdt.setText("");
                    courseTracksEdt.setText("");
                }
            }
        });
    }
 
    private void addDataToDatabase(String courseName, String courseDescription, String courseDuration, String courseTracks) {
         
        // on below line we are creating
        // a variable for our modal class.
        DataModal modal = new DataModal();
         
        // on below line we are getting id for the course which we are storing.
        Number id = realm.where(DataModal.class).max("id");
         
        // on below line we are
        // creating a variable for our id.
        long nextId;
         
        // validating if id is null or not.
        if (id == null) {
            // if id is null
            // we are passing it as 1.
            nextId = 1;
        } else {
            // if id is not null then
            // we are incrementing it by 1
            nextId = id.intValue() + 1;
        }
        // on below line we are setting the
        // data entered by user in our modal class.
        modal.setId(nextId);
        modal.setCourseDescription(courseDescription);
        modal.setCourseName(courseName);
        modal.setCourseDuration(courseDuration);
        modal.setCourseTracks(courseTracks);
         
        // on below line we are calling a method to execute a transaction.
        realm.executeTransaction(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
                // inside on execute method we are calling a method
                // to copy to real m database from our modal class.
                realm.copyToRealm(modal);
            }
        });
    }
}

Ahora ejecute su aplicación y vea el resultado de la aplicación. En este artículo, solo podrá agregar los datos a nuestra base de datos. En el próximo artículo, echaremos un vistazo a la lectura de estos datos. 

Producción:

Después de ejecutar con éxito el código, ingrese los datos requeridos dentro del EditText. Lo que es más importante, si desea saber cómo ver y ubicar la base de datos de Realm en Android Studio, consulte este artículo . Y puede ver a continuación cómo se almacenan los datos en la base de datos de Realm .
 

A continuación se muestra la estructura completa del archivo del proyecto después de realizar la instalación y agregar la operación:

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *