como registrar usuario con postgresql y android studio

Hola amigos, la gran parte de los tutoriales que hay aquí en el blog han sido en mysql, pero hoy veremos otro tipo de gestor de base de datos llamado postgresql, este tutorial sera super fácil para que cualquiera pueda entenderlo.
como registrar usuario con postgresql y android studio

PASO 1: Creando nuestra base de datos
Para este ejercicio utilizare el gestor de base de datos pgAdminIII mi BD se llamara  BD_persona y tendremos una tabla llamada persona con cuatro columnas.

CREATE TABLE persona
(
  id_persona serial NOT NULL,
  nombre character varying(120) NOT NULL,
  direccion character varying(90) NOT NULL,
  edad integer NOT NULL,
  CONSTRAINT id_persona_pkey PRIMARY KEY (id_persona)
)

 

PASO 2: Creando la WebService

En mi caso sera un servidor php local con xampp.
Para este ejercicio tendremos dos archivos conexion.php y registrar.php

 

conexion.php

<?php 
//variables para la coneccion
   $host= "localhost";
   $port= "5432";
   $user= "postgres";
   $database="BD_persona";
   $password ="12345";
 
   $conexion=pg_connect("host=$host  port=$port user=$user 
                        dbname=$database password=$password");
 
   //si fallara la conexion con la BD
   if (!$conexion) {
    echo "error en la conexion";
   }else{
 
    //echo 'conexion correctamente';
   }
 ?>

registrar.php

<?php 
           // incluimos la conexion
include 'conexion.php';

 $nombre = $_POST['nombre'];
 $direccion = $_POST['direccion'];
 $edad = $_POST['edad'];

//insertamos datos a los campos de nuestra tabla
 $query = "insert into persona(nombre,direccion,edad) 
                  values ('$nombre','$direccion','$edad')";
 
  if(pg_query($conexion, $query)){
 
  echo 'Datos enviados con éxito';
 
 }
  else{
 
  echo 'Inténtalo de nuevo';
 }
 pg_close($conexion);
?>

PASO 3: Creando la APP
Tenemos que crear  3 editText los cuales ingresaremos el nombre, dirección y la edad de la persona y debería verse como la siguiente imagen

Te dejo en activity_main.xml en modo texto.

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.androfast.pc.appregistrarpostgresqlandroid.MainActivity">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:text="Enviar datos al servidor"
            android:textSize="20dp"
            android:textColor="#000000" />

        <EditText
            android:id="@+id/edtNombre"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/textView"
            android:layout_marginTop="28dp"
            android:ems="10"
            android:gravity="center"
            android:hint="@string/ingresa_nombre"
            android:inputType="textPersonName" />

    <EditText
        android:id="@+id/edtDireccion"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/edtNombre"
        android:layout_marginTop="28dp"
        android:ems="10"
        android:gravity="center"
        android:hint="Ingresa Direccion"
        android:inputType="textPersonName" />

    <EditText
        android:id="@+id/edtEdad"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/edtDireccion"
        android:layout_marginTop="28dp"
        android:ems="10"
        android:gravity="center"
        android:hint="Ingresa Edad"
        android:inputType="number" />

    <Button
            android:id="@+id/button"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/edtEdad"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="38dp"
            android:text="Enviar datos " />
    </RelativeLayout>

Ahora debemos ir a nuestro buil.gradle y agregar la siguiente linea:

useLibrary‘org.apache.http.legacy’

Debemos agregarlo dentro de las llaves de android como se muestra en la siguiente imagen:

Ahora debemos ir a nuestro AndroidManifest y agregar el siguiente permiso

<uses-permission android:name=“android.permission.INTERNET”/>

Ahora debemos trabajar con nuestro MainActivity.java

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity  {

    String ServerURL = "http://localhost/postgresql/registrar.php" ;
    EditText nombre,direcion,edad;
    Button button;
    String TempNombre,TempDireccion;
    int TempEdad;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        nombre = (EditText)findViewById(R.id.edtNombre);
        direcion = (EditText)findViewById(R.id.edtDireccion);
        edad = (EditText)findViewById(R.id.edtEdad);
        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {

                ObtenerDatos();
                InsertaDatos(TempNombre, TempDireccion,TempEdad);
            }
        });
    }

    public void ObtenerDatos(){

        TempNombre = nombre.getText().toString();
        TempDireccion = direcion.getText().toString();
        TempEdad= Integer.parseInt(edad.getText().toString());

    }

    public void InsertaDatos(final String nombre, final String direccion, final int edad){

        class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
            @Override
            protected String doInBackground(String... params) {

                String NombreHolder = nombre ;
                String DireccionHolder= direccion;
                int   EdadHolder = edad ;

                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("nombre", NombreHolder));
                nameValuePairs.add(new BasicNameValuePair("direccion", DireccionHolder));
                nameValuePairs.add(new BasicNameValuePair("edad", Integer.toString(EdadHolder)));


                try {
                    HttpClient httpClient = new DefaultHttpClient();

                    HttpPost httpPost = new HttpPost(ServerURL);

                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                    HttpResponse httpResponse = httpClient.execute(httpPost);
                    HttpEntity httpEntity = httpResponse.getEntity();


                } catch (ClientProtocolException e) {

                } catch (IOException e) {

                }
                return "Datos insertados con éxito";
            }

            @Override
            protected void onPostExecute(String result) {

                super.onPostExecute(result);

                Toast.makeText(MainActivity.this, "Datos enviados con éxito", Toast.LENGTH_LONG).show();
            }
        }
        SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
        sendPostReqAsyncTask.execute(nombre,direccion, String.valueOf(edad));
    }

}
Analizando Código

Debemos editar con la dirección de nuestra ws

String ServerURL = "http://localhost/postgresql/registrar.php" ;

En esta sección del código es donde extraemos los datos de nuestra WS. Si observan bien verán que los nombres  entre comillas dobles hacen referencia a los atributos de nuestra tabla persona, de esa forma si están mal escritas  no llamaran ningún dato.

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
  nameValuePairs.add(new BasicNameValuePair("nombre", NombreHolder));
  nameValuePairs.add(new BasicNameValuePair("direccion", DireccionHolder));
  nameValuePairs.add(new BasicNameValuePair("edad", Integer.toString(EdadHolder)));
 

También en este trozo de código estamos llamando por medio de nuestro botón a los métodos que se encargaran de obtener  e insertar los datos de nuestra app.

button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {

                ObtenerDatos();
                InsertaDatos(TempNombre, TempDireccion,TempEdad);
            }
        });

Un comentario en «como registrar usuario con postgresql y android studio»

  1. Johan Andres Sanchez Raba

    List nameValuePairs = new ArrayList();
    nameValuePairs.add(new BasicNameValuePair(“nombre”, NombreHolder));
    nameValuePairs.add(new BasicNameValuePair(“direccion”, DireccionHolder));
    nameValuePairs.add(new BasicNameValuePair(“edad”, Integer.toString(EdadHolder)));
    Hola como estas una pregunta es que no entiendo este fragmento de codigo y queria saber si me lo puede explicar

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

WhatsApp chat