martes, 21 de mayo de 2019

Validar Datos(Editext) en Android Studio

Como les comente en mi ultimo entrada empezare a publicar artículos de  android studio para el desarrollo de aplicaciones android con java.

En esta ocasión les traigo algo muy sencillo pero que seguro a muchos a los que empiezan a realizar aplicaciones en android studio les servirá mucho, y es que cuando estamos desarrollando aplicaciones algo muy esencial es poder validar o controlar la entrada de datos por parte del usuario.

Así que hoy veremos 3 validaciones esenciales en toda aplicación.
  1. Validar que los campo de texto(Editext) no esten vacíos.
  2. Validar que valor ingresado sea un valor numérico.
  3. Validar el ingreso de una dirección de correo electrónico.
Lo primero que aremos sera crear un proyecto android vació al que llamaremos ValidarEditext

Nuevo Proyecto


El diseño de nuestra aplicación sera la siguiente

Diseño


Les explico como funcionara en la primera parte tenemos 2 Editext en donde se deben ingresar valores numéricos si los  valores ingresados son numéricos al presionar el botón Sumar mostrara la suma de los valores en el Textview, luego tenemos otro Editext donde se debe ingresar un correo electrónico al presionar el botón Validar Correo validaremos si el dato ingresado es un correo o no.

Una vez que tenemos nuestro diseño  agregaremos una clase a nuestro proyecto a la cual le llamaremos Validaciones esta clase sera donde crearemos los métodos para hacer las validaciones antes mencionadas(lo aremos en una clase para tener el código mas ordenado, poder aplicar, poo, para así poder reutilizar el código en todas las vistas).

clase
En esta clase tendremos el siguiente código

  
package com.example.validareditext;

import android.text.TextUtils;
import android.util.Patterns;
import android.widget.EditText;

public class Validaciones {

 //metodo para validar si es un valor numerico
    public  boolean isNumeric(String cadena) {
        boolean resultado;
        try {
            Integer.parseInt(cadena);
            resultado = true;
        } catch (NumberFormatException excepcion) {
            resultado = false;
        }
        return resultado;
    }

    //metodo para validar si es un email
    public  boolean isEmail(String cadena) {
        boolean resultado;
        if (Patterns.EMAIL_ADDRESS.matcher(cadena).matches()) {
            resultado = true;
        } else {
            resultado = false;
        }

        return resultado;
    }

    //metodo para validar si editext esta vacio
    public  boolean Vacio(EditText campo){
        String dato = campo.getText().toString().trim();
        if(TextUtils.isEmpty(dato)){
            campo.setError("Campo Requerido");
            campo.requestFocus();
            return true;
        }
        else{
            return false;
        }
    }
}



Como pueden observar dentro de nuestra clase creamos 3 métodos boolean para hacer las validaciones.
isNumeric este método nos servirá para validar si el dato ingresado(una cadena) es un valor numérico para eso hacemos uso de la clase Integer de su método parseInt, el método nos devuelve verdadero(true) si el dato es un valor numérico y falso(false) si el dato no es un valor numérico
isEmail con este método validamos si el valor ingresado(una cadena) es un correo o no haciendo uso de la clase Patterns, si el dato es un correo el método nos devolverá verdadero(true), y si no lo es nos devolverá falso(false)
Vacio este método recibe un parámetro de tipo Editext el cual verificamos que no este vació haciendo uso de la clase TextUtils y su método isEmpty, si el campo esta vació retornara verdadero y mostramos un mensaje y le mandamos el foco al campo vació, si el campo no esta vació nos devolvera falso(false)

Ahora para implementar estos métodos nos vamos a nuestra clase activity y lo primero que aremos sera enlazar nuestros controles a la vista

  
public class MainActivity extends AppCompatActivity {
    EditText edtNumero1,edtNumero2,edtcorreo;
    TextView resultado;
    Validaciones  objValidar; //objeto de nuestro clase Validaciones

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //enlazo controles a la vista
        edtNumero1 = findViewById(R.id.edtNumero1);
        edtNumero2 = findViewById(R.id.edtNumero2);
        edtcorreo = findViewById(R.id.edtCorreo);
        resultado = findViewById(R.id.txtresultado);
        objValidar = new Validaciones();
    }


Luego implementaremos los métodos para cada botón de la siguiente manera(asignaremos a cada botón el método correspondiente en el atributo onClick)
  
 //metodo para evento boton Sumar
    public void Sumar(View v){
        //capturo datos editext
        String numero1 = edtNumero1.getText().toString().trim();
        String numero2 = edtNumero2.getText().toString().trim();
        //valido que los editext no esten vacios
        if(!objValidar.Vacio(edtNumero1) && !objValidar.Vacio(edtNumero2) ){
            //valido que los datos ingresados sean numeros
            if(objValidar.isNumeric(numero1) && objValidar.isNumeric(numero2)){
                //si son numeros hago la suma
                int num1 = Integer.parseInt(numero1);
                int num2 = Integer.parseInt(numero2);
                int suma = num1+num2;
                resultado.setText("la suma es :"+suma);
            }
            else{
                //si los  valores no son numericos
                Toast.makeText(getApplicationContext(),"Ingrese Valores Numericos", Toast.LENGTH_SHORT).show();
            }
        }
    }

    //metodo para evento boton validar correo
    public void Validar(View v) {
        //capturo dato de editext
        String correo = edtcorreo.getText().toString().trim();
        //valido que editext no este vacio
        if (objValidar.Vacio(edtcorreo)) {
            //valido si el dato ingresado es un correo
            if (objValidar.isEmail(correo)) {
                Toast.makeText(getApplicationContext(), "El Correo es  Valido", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), "Correo NO Valido", Toast.LENGTH_SHORT).show();
            }
        }
    }

Por medio del objeto que creamos objValidar de nuestra clase Validaciones podremos hacer uso de los métodos que creamos enviando los argumentos correspondientes a cada método para hacer las respectivas validaciones
Capturas

Bueno eso seria todo, les dejo el proyecto para que lo descarguen.
Saludos desde El Salvador...

Descargar Proyecto Android

Si quieren donarme para una soda lo pueden hacer aqui.


miércoles, 15 de mayo de 2019

Crear Login WPF C#

Hola a todos espero se encuentre muy bien, después de mucho tiempo sin actualizar mi blog(por muchas razones, estudio,trabajo, proyectos personales. etc.). Agradezco a todos los que me escriben haciéndome consultas y agradeciendo por compartir mis conocimientos y pues aunque ha pasado mucho tiempo que no subo nada al blog aun me siguen escribiendo y pues aprovecho la ocasión para enviarles un saludo y decirles que de ahora en adelante tratare de ir contestando sus dudas o preguntas que me hacen llegar por medio de este blog. Tratare de estar haciendo entre 1 y 3 artículos al mes.

Bueno después de esta aclaración, vamos a lo que nos apasiona que es programar, en este articulo veremos como crear un Login en WPF usando C# y que este me muestre el nombre del usuario que a iniciado sesión. que es una de las consultas que me hacia un lector de mi blog  así que manos a la obra.

El ejemplo lo he realizado usando SQL SERVER 2014 EXPRESS y VS 2017

La base de datos que ocupare en esta ocasión se llama Usuarios y solo cuenta con una tabla Usuario




Lo primero que aremos sera crear nuestro proyecto WPF en Visual Studio




Creamos el diseño de nuestro formulario
    
<Window x:Class="LoginWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:LoginWPF"
        mc:Ignorable="d"
        Title="LOGIN " Height="400" Width="400" FontSize="14" Background="Black" WindowStartupLocation="CenterScreen">
    <Border Background="WhiteSmoke" CornerRadius="20" Margin="20">
        <StackPanel Margin="20">
            <Label Foreground="Black" FontSize="25" HorizontalAlignment="Center" >
                <Bold> Login</Bold>
            </Label>
            <Separator Background="Black"></Separator>
            <Label Foreground="Blue" >
                <Bold>Usuario</Bold>
            </Label>
            <TextBox Name="txtUsuario" Foreground="Black" FontSize="18"></TextBox>
            <Label Foreground="Blue">
                <Bold> Contraseña</Bold>
            </Label>
            <PasswordBox Name="txtPasword" Foreground="Black" FontSize="18"></PasswordBox>
            <Button Name="btnEntrar" Margin="60 10" Background="#545d6a" Foreground="Black" Height="50" Click="btnEntrar_Click"> Entrar</Button>
        </StackPanel>
    </Border>
</Window>


Ahora que ya tenemos nuestro diseño, agregaremos nuestra cadena de conexión a nuestro archivo App.config(como siempre lo hemos hecho en mis anteriores artículos)
  < connectionStrings> 
    < add name="default"
       connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Usuarios.mdf;Integrated Security=True;User Instance=True"
        providerName="System.Data.SqlClient" />
  < /connectionStrings>   

Lo siguiente que aremos es agregar una clase a nuestro proyecto en donde manejaremos el código de nuestro login para tenerlo de una manera mas ordenado(ademas de ser una de las mejores practicas de POO)



El código que tendrá nuestra clase sera el siguiente
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

namespace LoginWPF
{
    class Autenticacion
    {
       //variable nos sevira para obtener el nombre de usuario logeado
        public static string Nombre;
        public static bool Autenticar(string usuario, string password)
        {
            //consulta a la base de datos
            string sql = @"SELECT nombre
                          FROM Usuario
                          WHERE usuario = @user AND password = @pass";
            //cadena conexion  definida en AppConfig
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
            {
                conn.Open();//abrimos conexion

                SqlCommand cmd = new SqlCommand(sql, conn); //ejecutamos la instruccion
                cmd.Parameters.AddWithValue("@user", usuario); //enviamos los parametros
                cmd.Parameters.AddWithValue("@pass", password);

                //creamos el adaptador

                SqlDataAdapter da = new SqlDataAdapter(cmd);

                DataTable dt = new DataTable();
                da.Fill(dt);
                //valido si encruentra datos
                if (dt.Rows.Count > 0)
                {
                    DataRow row = dt.Rows[0];
                    Nombre = Convert.ToString(row["nombre"]);//guardo el campo nombre de usuario logeado
                    return true;
                }
                else
                    return false;
 
            }
        }
    }
}

Lo primero que hacemos es declarar una variable llamada nombre que nos servirá para obtener el nombre del usuario que inicio sesión. Luego tenemos un método Autenticar de tipo bool que recibe 2 parámetros usuario y password que serán los datos que consultaremos en la bd para verificar si son correctos o no. El método nos retornara verdadero si los datos ingresados son correctos, y si son correctos guarda en la variable Nombre el nombre del usuario que inicio sesión.

 Importante: dentro de esta clase que creamos agregar la referencia System.Configuration

Ahora dentro del evento click del botón entrar tendremos el siguiente código
        private void btnEntrar_Click(object sender, RoutedEventArgs e)
        {
            //validamos datos ingresados llamando nuestro metodo Autenticar de la clase Autenticacion
            if(Autenticacion.Autenticar(txtUsuario.Text,txtPasword.Password))
            {
                //si los datos son correctos muestro nombre de usuario
                MessageBox.Show("Bienvenido:" + Autenticacion.Nombre);
            }
            else
            {
                //si los datos no son correctos
                MessageBox.Show("Ingrese Datos Correctos");
            }

        } 

Como pueden ver lo único que hacemos es invocar el método Autenticar de la clase que creamos Autenticacion y le enviamos como argumentos los datos de las cajas de textbox, si los datos son correctos mostramos un mensaje con el nombre del usuario y si son incorrectos le mostramos un mensaje para que ingrese los datos correctos.



Bueno eso seria todo espero le sea útil, en los próximos artículos estaré poniendo ejemplos de java para android y un poco de php saludos desde El Salvador...

Descargar Proyecto C#

Si quieren donarme para una soda lo pueden hacer aqui.