buscador

Visita

s谩bado, 29 de enero de 2022

馃煝Android 30 : Crear un Registro de Notas con Base de Datos Sqlite en android studio

Bienvenidos al Blog el Inform谩tico Ibero en este post veremos como crear una base de datos SQLite en nuestro proyecto trabajando con el IDE Android Studio.

Video Tutoriales:
Video : Listar datos y mostrar en ListView - CRUD con SQLITE en Android Studio parte 1
Video : Implementar los metodo Guardar,Consultar,Actualizar,Eliminar-CRUD con SQLITE en Android Studio

Primero tenemos que crear nuestro proyecto con la actividad empty Activity.
Creado el proyecto nos dirigimos al archivo de la ruta nombre del proyecto > app > src > main > res > layout > activity_main.xml, dise帽amos la interfaz grafica.

Etiquetas del activity_main.xml  
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity">

<EditText
android:id="@+id/edtcodigo"
android:layout_width="160dp"
android:layout_height="42dp"
android:layout_marginStart="10dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="38dp"
android:ems="10"
android:inputType="number"
app:layout_constraintEnd_toStartOf="@+id/btnconsultar"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:autofillHints="" />

<Button
android:id="@+id/btnconsultar"
android:layout_width="156dp"
android:layout_height="42dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="4dp"
android:onClick="consulta"
android:text="consultar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/edtcurso"
android:layout_width="160dp"
android:layout_height="46dp"
android:layout_marginStart="10dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintEnd_toStartOf="@+id/button2"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtcodigo" />

<EditText
android:id="@+id/edtnota1"
android:layout_width="160dp"
android:layout_height="40dp"
android:layout_marginStart="10dp"
android:layout_marginTop="12dp"
android:ems="10"
android:inputType="number"
app:layout_constraintEnd_toStartOf="@+id/button3"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtcurso" />

<EditText
android:id="@+id/edtnota2"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:ems="10"
android:inputType="number"
app:layout_constraintEnd_toStartOf="@+id/button4"
app:layout_constraintHorizontal_bias="0.128"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtnota1" />

<EditText
android:id="@+id/edtnota3"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:ems="10"
android:inputType="number"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.042"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtnota2" />

<EditText
android:id="@+id/edtpromedio"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:inputType="number"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.04"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtnota3" />

<Button
android:id="@+id/button2"
android:layout_width="156dp"
android:layout_height="42dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="4dp"
android:onClick="Alta"
android:text="Guardar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnconsultar" />

<Button
android:id="@+id/button3"
android:layout_width="156dp"
android:layout_height="42dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="4dp"
android:onClick="modificacion"
android:text="modificar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2" />

<Button
android:id="@+id/button4"
android:layout_width="156dp"
android:layout_height="42dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="4dp"
android:onClick="baja"
android:text="eliminar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button3" />

<ListView
android:id="@+id/lvtablanotas"
android:layout_width="fill_parent"
android:layout_height="226dp"
android:layout_marginTop="24dp"
app:layout_constraintTop_toBottomOf="@+id/edtpromedio"
tools:layout_editor_absoluteX="1dp"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
Luego creamos una clase java llamada DBHelper.java

Clase BDHelper hacemos que herede de SQLiteOpenHelper y exportamos todos los m茅todos.
package informatico.to.registronotabd;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

import java.util.ArrayList;
/** * Created by RAUL hacemos que herede de SQliteOpenHelper */
public class BDHelper extends SQLiteOpenHelper{
/*Exportamos todos los metodos de la clase que heredo*/
public BDHelper(@Nullable Context context, @Nullable String name,
@Nullable SQLiteDatabase.CursorFactory factory,
int version) {
super(context, name, factory, version);
}

/*Oncreate metodo para crear la base de datos al lanzar la actividad */
@Override
public void onCreate(SQLiteDatabase db) {
/*db es un objeto de SQLiteDatabase lo resto es sentencias de sql*/
db.execSQL("create table registro(codigo integer primary key unique," +
"curso text not null," +
"nota1 integer not null," +
"nota2 integer not null," +
"nota3 integer not null," +
"promedio integer not null)");
}

/*si la tabla existe primero lo borramos*/
/*luego creamos nuevamente la base de datos*/
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("drop table if exists registro");
db.execSQL("create table registro(codigo integer primary key unique," +
"curso text not null," +
"nota1 integer not null," +
"nota2 integer not null," +
"nota3 integer not null," +
"promedio integer not null)");
}

//metodo listar registro de la db para extraer y mostrar en el listview
public ArrayList<String> getAllRegistros()
{
/*creamos un arreglo de string */
ArrayList<String> array_list = new ArrayList<String>();
/*creamos un objeto de la base de datos y lo inicializamos
con el metodo que abre la base de datos para lectura */
SQLiteDatabase db = this.getReadableDatabase();
/*creamos un objeto de cursor y lo pasamos la query del select*/
Cursor res = db.rawQuery( "select * from registro", null );
/*movemos el cursor a la primera fila*/
res.moveToFirst();
/*hacemos un bucle while para la busqueda de datos */
while(res.isAfterLast() == false){
/*miestras encuentre datos que capture id es el 0 curso es 1 */
array_list.add("Id:" + res.getString(0) +" | "+"Curso"+" "+
res.getString(1) + " | "+ " Promedio " + res.getString(5) );
/*movemos el cursor a la siguiente linea*/
res.moveToNext();}
/*retornamos el arreglo de string*/
return array_list;
}
}
Un vez creado la clase para la base de datos nos dirigimos a la clase MainActivity.java del proyecto y escribimos el c贸digo.
package informatico.to.registronotabd;

import androidx.appcompat.app.AppCompatActivity;

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

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
//varoables locales de los controles o clases
private EditText et1,et2,et3,et4,et5,et6;
private Cursor fila;
ListView listaView;
/*creamos las variables de la base de datos*/
BDHelper admin;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main);
//instanciamos las variables con los id de la vista
et1= (EditText) findViewById(R.id.edtcodigo);
et2= (EditText) findViewById(R.id.
edtcurso);
et3= (EditText) findViewById(R.id.
edtnota1);
et4= (EditText) findViewById(R.id.
edtnota2);
et5= (EditText) findViewById(R.id.
edtnota3);
et6= (EditText) findViewById(R.id.
edtpromedio);
listaView = (ListView) findViewById(R.id.
lvtablanotas);
//para que el campo promedio no pueda ser editado
et6.setEnabled(false);
//llamamos al metodo getAllRegistros que lista
admin = new BDHelper(this, "instituto", null, 1);
//obtenemos todos lo datos registrados de la base de datos.
ArrayList array_list = admin.getAllRegistros();
/*creamos un arreglo de string e instanciamos la forma de lista*/
ArrayAdapter<String> arrayAdapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, array_list);
/*a listview los pasamos el arreglo de string instanciado*/
listaView.setAdapter(arrayAdapter);
}

//metodo guardar los datos
public void Alta(View view) {
/*instanciamos la variables de dbhelper y
le pasamos el contexto , nombre de base de datos*/
admin = new BDHelper(this, "instituto",
null, 1);
/*abrimos la base de datos pora escritura*/
db = admin.getWritableDatabase();
/*capturamos los datos de los edittext*/
String codigo = et1.getText().toString();
String curso = et2.getText().toString();
String nota1 = et3.getText().toString();
String nota2 = et4.getText().toString();
String nota3 = et5.getText().toString();
//calculamos el promedio
/*creamosd una variable inicilizado con cero*/
int promedioope=0;
/*capturamos los valores y lo sumamos*/
promedioope=Integer.parseInt(et3.getText().toString());
promedioope=promedioope+Integer.
parseInt(et4.getText().toString());
promedioope=promedioope+Integer.
parseInt(et5.getText().toString());
/*dividimpos la cantoidad de notas con la suma*/
promedioope=promedioope/3;
//convertir a string
String promedio=String.valueOf(promedioope);
//insertamos en la db los datos capturados
ContentValues registro = new ContentValues();
registro.put("codigo", codigo);
registro.put("curso", curso);
registro.put("nota1", nota1);
registro.put("nota2", nota2);
registro.put("nota3", nota3);
registro.put("promedio", promedio);
/*realizamos el insert en el resgitro*/
db.insert("registro", null, registro);
/*cerramos la base de datos*/
db.close();
/*listamos los datos registrados*/
ArrayList array_list = admin.getAllRegistros();
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(
this,android.R.layout.
simple_list_item_1, array_list);
listaView.setAdapter(arrayAdapter);
/*limpiamos las cajas de textos*/
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
/*lanzamos una notificacion toast para saber que se cargaron los datos*/
Toast.makeText(this, "se cargaron los datos ", Toast.LENGTH_SHORT).show();
}

//metodo consultar la base de datos
public void consulta(View v) {
/*instanciamos la variables de dbhelper y
le pasamos el contexto , nombre de base de datos*/
admin = new BDHelper(this, "instituto", null, 1);
/*abrimos la base de datos pora escritura*/
db = admin.getWritableDatabase();
/*creamos una variables string y lo
inicializamos con los datos ingresados en edittext*/
String codigo = et1.getText().toString();
/*iniciamos la query en el cursor y indicamos el codigo digitado*/

fila = db.rawQuery("select curso,nota1,nota2,nota3,
promedio from registro where codigo=" + codigo, null);

        /*hacemos un if si hay datos que lea los datos del primer codigo*/
if (fila.moveToFirst()) {
et2.setText(fila.getString(0));
et3.setText(fila.getString(1));
et4.setText(fila.getString(2));
et5.setText(fila.getString(3));
et6.setText(fila.getString(4));
}
else
/*si no existe entonces lanzara un toast*/
Toast.makeText(this, "no existe un registro con dicho codigo",
Toast.
LENGTH_SHORT).show();
/*cerramos la base de datos*/
db.close();
}
//metodo eliminar
public void baja(View v) {
/*instanciamos la variables de dbhelper y
le pasamos el contexto , nombre de base de datos*/
admin = new BDHelper(this, "instituto", null, 1);
/*abrimos la base de datos pora escritura*/
db = admin.getWritableDatabase();
/*creamos una variables string y lo
inicializamos con los datos ingresados en edittext*/
String codigo = et1.getText().toString();
/*variable int pasamos el metodo delete de la tabla registro el codigo que edittext*/
int cant = db.delete("registro", "codigo=" + codigo, null);
/*cerramos la DB*/
db.close();
/*listamos los datos de la base de datos*/
ArrayList array_list = admin.getAllRegistros();
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(
this,android.R.layout.
simple_list_item_1, array_list);
/*pasamos los datos a la listview para lo muestre*/
listaView.setAdapter(arrayAdapter);
/*limpiamos las cajas de texto*/
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
/*si cante es igual que unos entonces*/
if (cant == 1)
/*lanzamos un toast que notifique se elimino*/
Toast.makeText(this, "se borr贸 el registro con dicho documento",
Toast.
LENGTH_SHORT).show();
else
/*de lo contrario lanzara que esos datos no existen*/
Toast.makeText(this, "no existe un registro con dicho documento",
Toast.
LENGTH_SHORT).show();
}
//metodo modificar
public void modificacion(View v) {
/*instanciamos la variables de dbhelper y
le pasamos el contexto , nombre de base de datos*/
admin = new BDHelper(this, "instituto", null, 1);
/*abrimos la base de datos pora escritura*/
db = admin.getWritableDatabase();
/*capturamos los datos de los edittext*/
String codigo = et1.getText().toString();
String curso = et2.getText().toString();
String nota1 = et3.getText().toString();
String nota2 = et4.getText().toString();
String nota3 = et5.getText().toString();
//calculamos el promedio
int promedioope=0;
promedioope=Integer.
parseInt(et3.getText().toString());
promedioope=promedioope+Integer.
parseInt(et4.getText().toString());
promedioope=promedioope+Integer.
parseInt(et5.getText().toString());
promedioope=promedioope/3;
//covertir a string
String promedio=String.valueOf(promedioope);
ContentValues registro = new ContentValues();
registro.put("codigo", codigo);
registro.put("curso", curso);
registro.put("nota1", nota1);
registro.put("nota2", nota2);
registro.put("nota3", nota3);
registro.put("promedio", promedio);
/*lanzamos el metodo update con el query para que actualice segun el id o codigo*/
int cant = db.update("registro", registro, "codigo=" + codigo, null);
/*cerramos la BD*/
db.close();
/*listamos los datos de la base de
datos para mostrarlo en el listview*/
ArrayList array_list = admin.getAllRegistros();
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(
this,android.R.layout.
simple_list_item_1, array_list);
/*mostramos los datos de la db*/
listaView.setAdapter(arrayAdapter);
/*limpiamos la caja de texto*/
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
/*si cante es igual que unos entonces*/
if (cant == 1)
/*si se cumple lka sentencia entonces muestra el toast*/
Toast.makeText(this,"se modificaron los datos",Toast.LENGTH_SHORT)
.show();
else
/*de lo contrario muestra el siguiente toast*/
Toast.makeText(this,"no existe un registro con dicho documento",
Toast.
LENGTH_SHORT).show();
}
}
Ejecutamos el proyecto en el emulador
GUARDAR  

CONSULTA
MODIFICAR
ELIMINAR

Suscr铆banse a mi canal de YouTube, compartan el contenido del blog y dejen sus comentarios.

ABRE EL PROYECTO DIRECTAMENTE DESDE GITHUB 
https://github.com/raul1995/RegistroNotaBD.git

Apoyen suscribi茅ndose a mi canal de Youtube canal " EL INFORMATICO IBERO" , Compartan el contenido del Blog, si les gusto el contenido del blog y del canal suscribanse es Gratis!!

No hay comentarios.:

Publicar un comentario

Raul Tamani A. ©. Im谩genes del tema de fpm. Con tecnolog铆a de Blogger.

Adblock Detectado

Apoya este sitio desactivando el Adblock para seguir navegando. ¡Gracias!

¡Ya Desactive el Adblock!