buscador

Visita

domingo, 30 de enero de 2022

馃煝Android 31 : Inicio de sesi贸n con base de datos SQLite en Android Studio

Bienvenidos al blog el Inform谩tico Ibero en esta oportunidad desarrollaremos un Inicio de sesi贸n con la base de datos SQLite desarrollando nuestro proyecto en el IDE android Studio.

Primero crearemos nuestro proyecto en el IDE Android Studio, para eso hacemos doble clic en el icono del IDE , presionamos crear nuevo proyecto , seleccionamos la actividad vaci谩, indicamos el nombre del proyecto como Log_InApp y luego presionamos en el bot贸n finish.
Una vez creado el proyecto por defecto, creamos tres paquetes para tener un poco de orden al momento de programar. creamos el paquete Database para la clase DBHelper, paquete Principal para clase principal y un paquete RegistroData para la clase registro de usurios.
En el paquete DataBase creamos una clase DBHelper y la extendemos (extends) a SQLiteOpenHelper , nos marcara error porque tenemos que implementar los m茅todos de la clase extendida, en el m茅todo OnCreate creamos la tabla de la base de datos:
db.execSQL("create table userstable(id_user integer  PRIMARY KEY AUTOINCREMENT NOT NULL," +
"username text NOT NULL,clave_user text NOT NULL)");
Igual mente en el mismo m茅todo hacemos un insert para tener un dato almacenado por defecto para realizar las pruebas.
db.execSQL("insert into userstable(username,clave_user) values('admin','admin')"); 

lo mismo hacemos en el m茅todo onupgrade, esta nos ayuda a administrar la creaci贸n de la base de datos y las versiones. y final mente la Clase DBHelper la tendremos completo asi :
public class DBHelper extends SQLiteOpenHelper {
public DBHelper(@Nullable Context context, @Nullable String name,
@Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
/*Este metodo nos ayuda a crear la base de datos que un no existe*/
@Override
public void onCreate(SQLiteDatabase db) {
/*Creacion de la tabla con 3 campos un integer que es auto incrementable
* un texto que no puede ser nulo que es el nombre del usuario
* la contrase帽a que tambien es un texto y no nulo*/
db.execSQL("create table userstable(id_user integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
"username text NOT NULL,clave_user text NOT NULL)");
/*Hacemos un insert para tener un valkor insertado como predeterminado*/
db.execSQL("insert into userstable(username,clave_user) values('admin','admin')");
}


/*Este metodo nos ayuda a administrar la versiones de la base de datos creada*/
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
/*Creacion de la tabla con 3 campos un integer que es auto incrementable
* un texto que no puede ser nulo que es el nombre del usuario
* la contrase帽a que tambien es un texto y no nulo*/
db.execSQL("create table userstable(id_user integer PRIMARY KEY AUTOINCREMENT NOT NULL," +
"username text NOT NULL,clave_user text NOT NULL)");
/*Hacemos un insert para tener un valkor insertado como predeterminado*/
db.execSQL("insert into userstable(username,clave_user) values('admin','admin')");
}}
Creamos dos actividades como Empty activity y uno ser谩 para la actividad principal y para el registr贸 de usuarios.
Entonces empezamos por el dise帽o de la interfaz Grafica de la actividad de lanzamiento que es la que se crea por defecto. entonces dise帽amos la actividad, insertamos en la actividad una ImagenView que ser谩 como dise帽o para poner un icono de usuario, luego ingresamos los textview como t铆tulos y los editText para que el usuario ingrese sus datos, y por ultimo dos botones uno que inicie sesi贸n y otro que me envi茅 a la actividad para registrar un nuevo usuario.

luego nos dirigimos a la clase de la actividad para dar el funcionamiento a la vista entonces desarrollamos la clase de la siguiente manera.
public class MainActivity extends AppCompatActivity {
//creamos la variables locales que utlizaremos
//Editext
EditText et1,et2;
//Cursor
private Cursor fila;
/*Creamos una variable string y la inicializamos con texto
que al final sera nuestro titulo de la aplicacion*/
String Title = "Inicio de Sesi贸n";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Pintamos el titulo de la actividad
this.setTitle(Title);
//habilitamos para que se pueda visualizar el action bar
getSupportActionBar().setDisplayShowHomeEnabled(true);
//Indicamos donde esta la imagen para el action bar
getSupportActionBar().setIcon(R.drawable.ic_action_name);
//emperejamos las variable con el xml editText usuario y password
et1= (EditText) findViewById(R.id.etusuario);
et2= (EditText) findViewById(R.id.edtclave);
}

//metodo de ingreso
public void InicioSesion(View v){
/*Creamos un objeto de la clase DBHelper e
instanciamos el constructor y damos el nonbre de
la base de datos y la version*/
DBHelper admin=new DBHelper(this,"instituto",null,1);
/*Abrimos la base de datos como escritura*/
SQLiteDatabase db=admin.getWritableDatabase();
/*Creamos dos variables string y capturamos los datos
ingresado por el usuario y lo convertimos a string*/
String usuario=et1.getText().toString();
String contrasena=et2.getText().toString();
/*inicializamos al cursor y llamamos al objeto de la base
de datos para realizar un sentencia query where donde
pasamos las dos variables nombre de usuario y password*/
fila=db.rawQuery("select username,clave_user from userstable where username='"+
usuario+"' and clave_user='"+contrasena+"'",null);
/*Realizamos un try catch para captura de errores*/
try {
/*Condicional if preguntamos si cursor tiene algun dato*/
if(fila.moveToFirst()){
//capturamos los valores del cursos y lo almacenamos en variable
String usua=fila.getString(0);
String pass=fila.getString(1);
//preguntamos si los datos ingresados son iguales
if (usuario.equals(usua)&&contrasena.equals(pass)){
//si son iguales entonces vamos a otra ventana
//Menu es una nueva actividad empty
Intent ven=new Intent(this, PrincipalMenu.class);
//lanzamos la actividad
startActivity(ven);
//limpiamos las las cajas de texto
et1.setText("");
et2.setText("");
}
}//si la primera condicion no cumple entonces que envie un mensaje toast
else {
Toast toast=Toast.makeText(this,"Datos incorrectos",Toast.LENGTH_LONG);
//mostramos el toast
toast.show();
}

} catch (Exception e) {//capturamos los errores que ubieran
Toast toast=Toast.makeText(this,"Error" + e.getMessage(),Toast.LENGTH_LONG);
//mostramos el mensaje
toast.show();
}
}
//metodo que nos envia a otra ventana
public void RegistroData(View v){
//creamos una variables e instanciamos al intent para que me muestra la clase
Intent rdata=new Intent(this, RegistroData.class);
//lanzamos la actividad
startActivity(rdata);
}}
Una vez creado la actividad principal y dado las funcionalidad mediante la clase de java, ahora nos dirigimos a la actividad del Registro de los nuevos usuarios, por ejemplo yo lo llame a la clase RegistroData y la actividad actividad_registro_data, nos centraremos en el dise帽o de la actividad, llamada actividad_registro_data agregamos 3 textview(para el titulo,para la usuario,para contrase帽a) y un view para la linea, 2 editText para ingresar datos y un ImagenButton para guardar los datos en la base de datos.

ahora nos dirigimos a la clase de la actividad y empezamos desarrollar el c贸digo para dar la funcionalidad a la actividad. la clase completa es la siguiente.
public class RegistroData extends AppCompatActivity {
/*Titulo de la actividad*/
String Title="Registro de Usuarios";
/*EditText para el ingreso de datos del usuario*/
EditText Etusurname,EtPass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registro_data);
/*Pintamos el titulo*/
this.setTitle(Title);
/*Instanciamos las variables
* capturamos los datos*/
Etusurname = (EditText) findViewById(R.id.editTextTextUserName);
EtPass=(EditText) findViewById(R.id.editTextTextPassword);
}
/*Metodo Para registrar los datos del usuario*/
public void RegistrarDataUser(View v){
/*creamos un objeto de la clase DBHelper
* inicializamos el constructor
* nombramos la base de datos
* version de la base de datos*/
DBHelper admin=new DBHelper(this,"instituto",null,1);
/*Abrimos la base de datos para escritura*/
SQLiteDatabase db=admin.getWritableDatabase();
/*creamos dos variables string
* inicializamos y convertimos*/
String UserName=Etusurname.getText().toString();
String PassUser=EtPass.getText().toString();
/*Creamos un objeto contentvalues y instanciamos*/
ContentValues values = new ContentValues();
/*capturamos valores*/
values.put("username",UserName);
values.put("clave_user",PassUser);
/*llamamos al insert damos el nombre de la base de datos
* y los valores*/
db.insert("userstable",null,values);
/*cerramos la base de datos*/
db.close();
/*Lanzamos una notificacion toast*/
Toast ToastMens= Toast.makeText(this,"Usuario registrado",Toast.LENGTH_SHORT);
/*mostramos el toast*/
ToastMens.show();
/*lanzamos la actividad*/
Intent intent=new Intent(this, MainActivity.class);
/*iniciamos la actividad*/
startActivity(intent); }}
Despu茅s de desarrollada los codigos de las actividades por ultimo implementamos el titulo de la actividad en la clase mediante la linea de codigo. 
/*Creamos una variable string del titulo*/
String Title="Bienvenido a la Aplicaci贸n";
/*Pintamos el titula de la actividad*/
this.setTitle(Title);
Por ahora lo dejaremos ah铆 al proyecto faltando implementar mas contenido una vez iniciada sesi贸n.
Ejecutamos el proyecto, en el emulador y veamos las funciones dado mediante el c贸digo del lenguaje.


Aplicaci贸n lanzada Inicio de Sesi贸n



Cuando se Inicie Sesi贸n nos redirige a al otra actividad




Actividad de Registro de nuevos usuarios

Si presionamos el icono del Ojo nos muetsra esn texto la contrase帽a

Registro de un dato nos env铆a un toast y nos lanza a la actividad del login.

Video Tutorial


ABRE EL PROYECTO DESDE GITHUB
https://github.com/raul1995/Log_InApp.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!!

2 comentarios:

  1. Disculpa estoy haciendo un proyecto para poder titularme y manejo login con base de datos, veo tu ejemplo pero no me funcionan las acciones intent de cada boton, necesito registrar mas datos e ingresar usuario y contrase帽a que una ves que esten registrados en la base de datos me permita ver mis datos, actualizar y borrar. Me podr铆as ayudar de verdad ya no se a quien mas recurrir

    ResponderBorrar
  2. Se que ya ha pasado algo desde que se escribi贸 este post.
    He intentado hacer una consulta para saber si existe informaci贸n dentro de la tabla "usuarios" de mi app. La idea es la siguiente, si es la primera vez que el usuario entra por obvias razones no habr谩 un usuario registrado y me mande a una pantalla para el registro, de lo contrario, si ya ha ingresado, ya debe existir un usuario, entonces que prosiga con el LoginActivity.
    No se si me expliqu茅, pero espero me ayuden

    ResponderBorrar

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!