Portafolio Unidad 3

 Ventajas de SQLite


  • No requiere una previa instalación sino que viene incluida y puede ser usada cuando sea necesaria sin necesidad de externos.
  • Es muy ligero y se integra con la propia aplicación, ya que la base de datos se almacena en un único archivo y su peso es muy reducido en comparación con otras opciones disponibles.
  • Es muy sencillo de utilizar, ya que no utiliza una comunicacion cliente-servidor para las consultas, ya que se comunica con un archivo que es la base de datos y que puede ser autogenerado por la propia aplicacion.

Gestión de Información por medio de Bases de Datos



 El surgimiento de la tecnología  ha hecho posible la creación de nuevas herramientas que facilitan las tareas en una organización. Uno de ellos son las bases de datos, ya que son una buena opción para almacenar datos los cuales los usuarios desean modificar de forma proactiva, también para almacenar contraseñas y formularios, para las aplicaciones de hoy en día estas funcionalidades solo se encuentran en las bases de datos, ya que gestionar la información de otras formas no es tan eficiente como organizarla en una base de datos confiable, y adicional Android se conecta de forma "sencilla" a estas bases de datos permitiendo asi poder crear aplicaciones aprovechando estas funcionalidades.

Las principales utilidades que ofrece son las siguientes:
  • Agrupar y almacenar todos los datos de la empresa en un único lugar.
  • Evitar la redundancia y mejorar la organización de nuestra actividad.
  • Conectar los datos de operaciones, facturación e interacciones con cada cliente o potencial.
  • Activar campañas de marketing o tareas.

Conexión de Bases de Datos en Dispositivos Móviles



Creación de una Base de Datos


package com.example.hotel;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


import androidx.annotation.Nullable;

import com.example.hotel.Utilidades.utilidades;

public class Conexionbd extends SQLiteOpenHelper {
public Conexionbd(@Nullable Context context,@Nullable String name,@Nullable SQLiteDatabase.CursorFactory factory,int version){
super(context,name,factory,version);
}
@Override
public void onCreate(SQLiteDatabase BDHotel) {
BDHotel.execSQL(utilidades.CrearTblReserva);//**
BDHotel.execSQL(utilidades.CrearTblRegistro);//***
}

@Override
public void onUpgrade(SQLiteDatabase BDHotel, int i, int i1) {

//se le indica que si la tabla existe la borre y cree una nueva
BDHotel.execSQL("DROP TABLE IF EXISTS "+ utilidades.tblReserva);
BDHotel.execSQL("DROP TABLE IF EXISTS "+ utilidades.tblRegistro);


onCreate(BDHotel);

}
}





Creación de Tablas

package com.example.hotel.Utilidades;

import java.util.Date;

public class utilidades {

//constantes de los campos de la tabla Clientes
public static final String tblRegistro = "Registro";//capturar los datos del formulario
public static final String campoUsuario = "usuario";
public static final String campoContraseña = "contraseña";


//se crea la constante que va a guardar el string para crear la tabla Clientes

public static final String CrearTblRegistro = "CREATE TABLE " + tblRegistro +
" (" + campoUsuario + " INTEGER PRIMARY KEY, " + campoContraseña
+ " TEXT)";

//constantes de los campos de la tabla Productos
public static final String tblReserva = "Reserva";
public static final String campoCodigo = "codigo";
public static final String campoHotel="hotel";
public static final String campoPersonas = "personas";
public static final String campoDias = "dias";
public static final String campoFecha = "fecha";

//se crea la constante que va a guardar el string para crear la tabla productos
public static final String CrearTblReserva = "CREATE TABLE " + tblReserva +
" (" + campoCodigo + " INTEGER PRIMARY KEY , "+ campoHotel +
" TEXT, "+ campoPersonas +
" INTEGER, " + campoDias + " INTEGER, " + campoFecha + " TEXT)";

}




Creación de Relaciones entre Tablas



El motor SQLite tiene un buen soporte para las relaciones entre las tablas, es decir, soporta las claves foráneas especificando relaciones de una tabla con otra.

Una clave foránea se indica al final de la creación de una tabla con:

FOREIGN KEY(clave_foranea) REFERENCES otra_tabla(campo_de_esa_tabla)

Veamos un ejemplo sencillo de una tabla llamada Producto (grupos de Cliente) la cual queda definida con su clave primaria autoincrementable así:

create table if not exists producto(
id integer primary key autoincrement,
nombre text not null
);

Para crear la relación vamos a crear una tabla llamada Cliente, porque un Producto pertenece a un grupo. Así que la definición queda de la siguiente manera:

create table if not exists Cliente(
id integer primary key autoincrement,
id_Producto integer,
nombre text not null,
direccion text not null,
foreign key(id_Producto) references Producto(id)
);


Logueo y Contraseña de Usuario


package com.example.hotel;

import androidx.appcompat.app.AppCompatActivity;


import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.example.hotel.Utilidades.utilidades;

public class Registo_Data extends AppCompatActivity {
String
Title="Registro de Usuarios";
EditText etUsername,etPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registo_data);
this.setTitle(Title);
etUsername=(EditText) findViewById(R.id.etUsername);

etPassword=(EditText) findViewById(R.id.etPassword);
}
public void click(View view) {
switch (view.getId()) {

case R.id.btnsave:
RegistrarUsuario()
;
break;

case R.id.btnback:
Intent VistaPrincipal =
new Intent(this, menu.class);
startActivity(VistaPrincipal);
break;
}
}

private void RegistrarUsuario() {


long result = 0;
Conexionbd conexion = new Conexionbd(this, "BDHotel", null, 1);
SQLiteDatabase BDHotel = conexion.getWritableDatabase();

String Username = etUsername.getText().toString();
String Passuser = etPassword.getText().toString();

ContentValues values = new ContentValues();
values.put(utilidades.campoUsuario, Username);
values.put(utilidades.campoContraseña, Passuser);

if(!Username .isEmpty() && !Passuser.isEmpty()){

BDHotel.insert(
"tblRegistro", null, values);
BDHotel.close();


if (result > 0) {
//se pone un mensaje de éxito
Toast.makeText(this, "Usuario Almacenado Exitosamente", Toast.LENGTH_LONG).show();


} else {
Toast.
makeText(this, "No se insertaron datos", Toast.LENGTH_LONG).show();

}

}
else {

Toast.
makeText(this,"Ingrese Correctamente los datos", Toast.LENGTH_LONG).show();
}
Intent intent=
new Intent(this,menu.class);
startActivity(intent);
}

public void salida(View view) {
finishAffinity()
;
}







Implementación de Métodos

Para realizar el CRUD (Agregar, buscar, actualizar y borrar) en Android Studio, enlazado con SQLITE, debemos de realizar el siguiente código:

1. Para agregar o insertar datos, se debe de utilizar el método SQLiteDatabase.insert(), cuya funcionalidad es añadir filas a nuestras tablas. Los pasos para utilizarlo es:

  • Crea un objeto del tipo ContentValues (el cual permite almacenar las columnas del registro en pares clave-valor)
  • Añadir los pares con el método put()
  • Invoca a insert() a través de la instancia de la base de datos.
      Ejemplo:

   

2. Para buscar datos u obtener los registros de nuestra tabla, usaremos el método query(), además de  pasarle los datos que necesitamos consultar en la base de datos

     Ejemplo:


3. Para eliminar registros de nuestra base de datos en SQLITE, debemos de utilizar el método: SQLiteDatabase.delete

        Ejemplo: 

    


4.  Para modificar o actualizar nuestra base de datos, debemos de utilizar el método: SQLiteDatabase.update además de pasarle los parámetros que necesitamos.

      Ejemplo: 
      


Reflexión

Despues de finalizar las tareas solicitadas en cada uno de los Portafolios la sensacion de haber aprendido algo nuevo mientras se realizaban estos portafolios ha sido grata, ya que nos ah permitido ampliar nuestros horizontes respecto a lo que es la programación de dispositivos móviles y el como podemos sacar provecho de este aprendizaje e implementarlo a nuestro currículum como profesionales en el mundo del Desarrollo de Software. 

Comentarios

Entradas populares