miércoles, 3 de julio de 2013

#AndroidSharedPreferences


Haremos un programa que solicite el nombre del usuario y lo guarde
mediante SharedPreferences.
Al iniciar la aplicación poner en el  EditText el último nombre
introducido.
Un botón para almacenar el nombre y que finalice el programa.
Crearemos un nuevo proyecto llamado SharedPreferences y lo
almacenaremos en el package name: android.ejemplos
01




02

 




Disponemos un TextView y definimos su ID con el nombre tv1, la propiedad
Text con “Introduce Nombre:”.
Disponemos un EditText y definimos su ID con el nombre et1.
Disponemos un Button y definimos su propiedad Id con el nombre button1
su propiedad Text con el valor guardar su propiedad OnClic con el valor
guardar.

03

 





04




El código java es:
package android.ejemplos;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {
private EditText et1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.et1);
SharedPreferences guarda=getSharedPreferences(“archivo”,Context.MODE_PRIVATE);
et1.setText(guarda.getString(“nombre”,”"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void guardar(View v) {
SharedPreferences guarda=getSharedPreferences(“archivo”,Context.MODE_PRIVATE);
Editor editarch=guarda.edit();
editarch.putString(“nombre”, et1.getText().toString());
editarch.commit();
finish();
}
}


Obtenemos la referencia del EditText: et1=(EditText)findViewById(R.id.et1);
Obtenemos una referencia de un objeto de la clase SharedPreferences a
través del método getSharedPreferences. El primer parámetro es el nombre
del archivo de preferencias y el segundo la forma de creación del archivo
(MODE_PRIVATE indica que solo esta aplicación puede consultar el archivo
XML que se crea)
SharedPreferences guarda=getSharedPreferences(“archivo”,Context.MODE_
PRIVATE);
Para extraer los datos del archivo de preferencias debemos indicar el nombre
a extraer y un valor de retorno si dicho nombre no existe en el archivo de
preferencias  hace que Android lo cree, si tratamos de extraer el valor de
nombre retornará el segundo parámetro es decir el String con una cadena
vacía:
et1.setText(guarda.getString(“nombre”,”"));
Cuando se presiona el botón “Guardar” lo que hacemos es grabar en el archivo
de preferencias el contenido del EditText en una variable llamada “nombre”:
public void guardar(View v) {
SharedPreferences guarda=getSharedPreferences(“archivo”,Context.MODE_
PRIVATE);
Editor editarch=guarda.edit();
editarch.putString(“nombre”, et1.getText().toString());
editarch.commit();
finish();
}
Debemos crear un objeto de la clase Editor y obtener la referencia del objeto
de la clase SharedPreferences que acabamos de crear. Mediante el método
putString almacenamos en nombre el valor del String cargado en el EditText.
Luego debemos llamar al método commit de la clase editor para que el dato
quede almacenado en el archivo de preferencias.
Esto hace que cuando volvamos a iniciar la aplicación se recupere el último
nombre ingresado.
Con finish de la clase Activity finaliza la actividad actual, al tener solo una
actividad en esta aplicacion, el programa terminara.
Por ultimo hay que añadir permiso para escritura en android manifest,
según imagen:

05

06



















viernes, 28 de junio de 2013

#NuevoDiseñoBlogProgramacion

Debido al cierre de xunem hosting por venta a otra empresa, el anterior sitio www.programacion.domiweb.net ha sido cancelado, por lo que he tenido
que traspasarlo a http://aprendiendoprogramacion.hol.es/.
Esta algo mas organizado que este blog, aunque por ahora y por seguridad,
seguire poniendo los contenidos en ambos lugares.

#PhpFunciones

Las funciones nos facilitan la reutilización de codigo y que tengamos un
codigo mas legible y ordenado. Para definir una funcion en PHP, hacemos
lo siguiente:
function [nombre funcion]([parametros])
{
[algoritmo]
}
Una función puede devolver un dato, supongamos que necesitamos una
función que nos de la media de dos importes, el código sería:
<html>
<head>
<title>Media</title>
</head>
<body>
<?php
function devuelvemedia ($num1,$num2)
{
$media=$num1/$num2;
return $media;
}
$n1=3;
$n2=2;
$m=devuelvemedia ($n1,$n2);
echo $m;
?>
</body>
</html>
 Al llamar a la funcion el dato devuelto lo guardamos en la variable $m.
Cuando la funcion devuelve dato, tenemos que emplear el comando
return seguido de la variable.

#PhpVectorAsociativo

Este tipo lo hemos empleado sin conocerlo, en otras ocasiones cuando
tratamos el tema de los envios de datos con formularios y recuperamos
la informacion a traves de $_REQUEST, creado por PHP.
Los vectores de este tipo permiten acceder a por medio de un subindice
string (cadena).
Si quisieramos guargar en un vector o matriz el DNI, nombre y telefono
de una persona.
Empleando un vector o matriz con subíndice lo hariamos del siguiente
modo:
<?php
$datos[]="28738154";
$datos[]="Juan Gomez";
$datos[]="638256521";
?>
Haciendolo asi, tenemos que recordar que el subindice 0 equivale al DNI,
el 1 al nombre y el 3 al telefono, esto es facil cuando son pocos campos,
pero cuando se relacionan muchos campos (como en bases de datos) la
tarea se complica y es mas comodo y facil asignar un alias al indice, que es
lo que realizamos con los vectores asociativos.
<?php
$datos['dni']="28738154";
$datos['nombre']="Juan Gomez";
$datos['telefono']="638256521";
echo $datos['nombre'];
?>
Con esto vemos que para mostrar el nombre no hay que indicar su posicion
dentro de la matriz, nos basta con indicar que es nombre que sera el alias
utilizado como indice.

#PhpArchivoTexto

Un punto basico en toda web es poder registrar información en el servidor
y que se pueda recuperar para diversos usos, ya sea con ficheros de textos
o bases de datos.
Comenzaremos por los ficheros de textos.
En este ejemplo se crea un archivo de texto en el que se incluye el nombre y
observaciones, por lo que en la primera pagina incluimos el formulario con
un objeto text y otro textarea.
 <html>
<head>
<title>ArchivoTexto</title>
</head>
<body> <form action="pagrec.php" method="post">
Introduce nombre:
<input type="text" name="nombre">
<br>
Observaciones:
<br>
<textarea name="observaciones" rows="10" cols="40">
</textarea>
<br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

Las propiedades rows y cols que dimensionan el formulario en la
pantalla:
<textarea name="observaciones" rows="10" cols="40">
</textarea>
La otra página (pagrec.php) graba los datos que se introducen en el
formulario:
 <html>
<head>
<title>ArchivoGraba</title>
</head>
<body>
<?php
$ar=fopen("dat.txt","a") or
die("Error");
fputs($ar,$_REQUEST['nombre']);
fputs($ar,"\n");
fputs($ar,$_REQUEST['observaciones']);
fputs($ar,"\n");
fclose($ar);
echo "Los datos se grabaron correctamente.";
?>
</body>
</html>
En primer lugar creamos o abrimos el archivo de texto "dat.txt".
El segundo parámetro de la función fopen indica la forma de apertura de
archivo "a" lo crea o abre para añadir datos al final.
En este ejemplo nos interesa abrirlo para añadir, por lo que usamos el
parámetro "a".
Si el archivo no se puede abrir, se ejecuta la instrucción que se encuentra
luego del operador "or" en nuestro caso llamamos a la función die que finaliza
la ejecución mostrando el mensaje que pusimos.
$ar=fopen("dat.txt","a") or
die("Error");
Para la grabación de datos utilizamos la función fputs que tiene dos parámetros:
la referencia al archivo donde grabamos y el texto que pasamos para grabar.
fputs($ar,$_REQUEST['nombre']);
fputs($ar,"\n");
Para el salto de línea en el archivo de texto, usamos los caracteres \n.
Cuando terminamos con el archivo pasamos a cerrarlo con fclose.
El archivo se crea en el servidor, donde tengamos nuestras webs alojadas.
Para leer un archivo de texto utilizamos la la función fgets, abriendo dicho
archivo en modo lectura.
Utilizaremos el siguiente codigo para mostrar en la pantalla el contenido del
archivo "dat.txt" creado anteriormente.
<html>
<head>
<title>AperturaTexto</title>
</head>
<body>
<?php
$file=fopen("dat.txt","r") or
die("Error al abrir el archivo");
while (!feof($file))
{
$lin=fgets($file);
$saltodelinea=nl2br($lin);
echo $saltodelinea;
}
fclose($file);
?>
</body>
</html>
Mediante el siguiente codigo preparamos el archivo para abrir como solo
lectura “r”, en caso de error se ejecuta el codigo que va después de or.
$file=fopen("dat.txt","r") or
die("Error al abrir el archivo");
La función feof devuelve true si se termina el archivo.
Incluimos la lectura de lineas dentro de una estructura con while, que
mientras no llegue al final del archivo continuara leyendo lineas.
while (!feof($file))
Vamos leyendo una línea completa del archivo con la función fgets:
$lin=fgets($file);
La variable $linea contiene una línea completa del archivo de texto,
inclusive el salto de línea (\n)
Como en html no se hace el salto de linea con \n, pasamos a convertirlo
con la funcion nl2br.
Y pasamos a imprimir el resultado.
$saltodelinea=nl2br($lin);
echo $saltodelinea;
No olvidemos nunca cerrar el archivo con fclose.

jueves, 27 de junio de 2013

#PhpEnvioDatosFormulario

En este ejemplo veremos como se pasan datos a traves de un
formulario, crearemos 2 archivos con el notepad.
<html>
<head>
<title>Formulario de datos</title>
</head>
<body>
<form method="post" action="recep.php">
Introduce nombre:
<input type="text" name="nombre">
<br>
<input type="submit" value="enviar">
</form>
</body>
</html>

El codigo anterior lo nombraremos desde el bloc de notas como
form.php.
Para el envio de datos a traves de un formulario, necesitamos dos paginas
web una con el formulario y otra que recibe los datos.
En el codigo de arriba se incluye un formulario basico en el que se solicita
un nombre y se envia la informacion mediante un boton, en action se incluye
el nombre de la pagina que procesa los datos. Este codigo es un formulario
simple en html, codigo basico de creacion de paginas web.
<html>
<head>
<title>Capta nombre del formulario</title>
</head>
<body>
<?php
echo "El nombre obtenido es:";
echo $_REQUEST['nombre'];
?>
</body>
</html>
Este codigo lo nombraremos como recep.php y lo que realiza es la captura
del nombre introducido en la web anterior y procesarlo, segun las
instrucciones que se establecen en dicho codigo lo que realiza es la
impresion del nombre mediante el comando ECHO que sirve para imprimir
textos o variables en pantalla, con echo $_REQUEST['nombre'] se captura
el dato recibido desde la otra web y se imprime en pantalla; las variables
en php se preceden por $.

#PhpEstructuraRepeticion

Estructuras repeticion con While y For:
<html>
<head>
<title>While</title>
</head>
<body>
<?php
$valor=rand(1,49);
$inicio=1;
while($inicio<=$valor)
{
echo $inicio;
echo "<br>";
$inicio++;
}
?>
</body>
</html>


<html>
<head>
<title>BucleFor</title>
</head>
<body>
<?php
for($rep=1;$rep<=10;$rep++)
{
echo $rep;
echo "<br>";
}
?>
</body>

</html>

Cuando queremos repetir algo x veces mediante codigo una de las
estructuras utilizadas en la mayoria de lenguajes de programacion
es FOR, como pueden observar mediante esta estructura, indicamos
primero el inicio $rep=1, despues indicamos la condicion mientras
$rep<=10 y despues indicamos el incremento de la variable.
Por lo que en el codigo ejemplo lo que se hace es repetir hasta que la
variable rep sea mayor que diez, el incremento se podria poner asi
$rep=$rep+1, pero al poner ++ lo abreviamos.
Esta variable la imprimiremos en pantalla y pondremos un salto de
linea br (en html).
Otra estructura de repeticion es mediante WHILE, en este caso la
estructura interna se repite mientras se cumpla la condicion indicada
mediante while(condicion) ...
En el ejemplo se genera un numero al azar con rand, entre 1 y 49, se da
un valor a inicio y se comprueba si inicio es menor al valor generado,
si es asi se incrementa inicio y se vuelve a comprobar, asi hasta que
inicio supere al valor generado.

#PhpCondicionalIf

Cuando en un programa hay que tomar una decision y elegir una forma
de actuar u otra, se emplean las estructuras condicionales, una de ellas
es IF que es la que veremos ahora.
La estructura se compone de la instruccion IF, seguida entre parentesis
de la condicion que se tiene que cumplir y seguidamente entre llaves lo
que se ejecutara, en caso de no cumplirse pasamos a ELSEIF y por ultimo
a ELSE.
Las instrucciones que se incluyen entre llaves si terminan con punto y coma,
pero no asi la condicion a cumplir, como se observa en el codigo.
En este ejemplo se genera un numero al azar y se comprueba en que intervalo
esta de los programados, indicando en pantalla el resultado.
<html>
<head>
<title>CondicionalIf</title>
</head>
<body>
<?php
$numero=rand(1,999);
echo "El numero elegido es $numero<br>";
if ($numero<=10)
{
echo "Es menor o igual a 10";
}
elseif ($numero<=100)
{
echo "Es mayor que 10 y menor o igual a 100";
}
else
{
echo "Es mayor de 100 y menor de 999";
}
?>
</body>
</html>

miércoles, 26 de junio de 2013

#PhpCadenas

Una variable de este tipo puede almacenar un cierto numero de caracteres
$string1="saludo";
$string2="inicial";
echo $string1." ".$string2;

Para unir cadenas empleamos el punto ".".
Cuando una cadena encerrada entre comillas dobles contiene una variable
en su interior, ésta se trata como tal, por lo tanto se utilizará su contenido
para el almacenamiento.
$minuto=20;
$reloj="Han pasado $minuto minutos";
echo $reloj;
En pantalla se muestra: Han pasado 20 minutos
En la cadena se sustituye el nombre de la variable $minuto, con el contenido
de la misma.
Podemos grabar el codigo en fichero de texto y renombrarlo como nombre.php,
como hemos realizado en anteriores ocasiones, para ver el resultado en el
navegador. Para no repetirme, en los siguientes capitulos no mencionare la
grabacion del archivo y su prueba, para asi dedicar la explicacion al codigo en si,
ya que el resto esta explicado en los primeros pasos.

#PhpVariables

En php las variables comienzan con el signo $, al contrario que en otros
lenguajes, no es necesario definir el tipo de variable, el nombre si es
sensible a mayusculas minusculas, no es lo mismo Variable que variable
o VARIABLE, por lo que debemos acostumbrarnos a escribirlo todo en
minusculas por ejemplo.
Para poner comentarios utilizamos // como se ve  en el codigo.
Una declaracion de variables seria:
$dia = 15; //Se declara una variable de tipo integer (numerica)
$salario = 921.35; //Se declara una variable de tipo double (mas
precision, decimal)
$apellido = "perez"; //Se declara una variable de tipo string (cadena)
$cierto = true; //Se declara una variable boolean (true o false, dos valores
nada mas, verdadero o falso), se utiliza por ejemplo para comprobar si existe
o no algo mediante codigo, o si esta o no pulsado un boton, etc.
En el codigo lo que realmente se hace es declarar las variables anteriores y
mostrarlas por pantalla.
Para comprobarlo abrimos el bloc de notas, copiamos y pegamos el codigo de
abajo, le damos a archivo guardar y que muestre todos los archivos, lo
nombramos como variables.php.
Abrimos la carpeta wamp/www y metemos en ella el archivo creado.
Con el wampserver activo, nos vamos a nuestro navegador y ponemos
localhost/variables.php.
Este codigo sencillo nos permite ver como se declaran variables para almacenar
datos, parte muy importante en cualquier lenguaje de programacion.

<html>
<head>
<title>Variables</title>
</head>
<body>
<?php
$dia = 15; //Se declara una variable de tipo integer
$salario = 921.35; //Se declara una variable de tipo double
$apellido = "perez"; //Se declara una variable de tipo string
$cierto = true; //Se declara una variable boolean
echo "Variable entera:";
echo $dia;
echo "<br>";
echo "Variable double:";
echo $salario;
echo "<br>";
echo "Variable string:";
echo $apellido;
echo "<br>";
echo "Variable boolean:";
echo $cierto;
?>
</body>
</html>

martes, 25 de junio de 2013

#WampServer

Primeramente bajamos el wamp server de aqui: WampServer
Una vez bajado lo ejecutamos para instalarlo en nuestro pc, dejamos
opciones por defecto.
Reinicia el ordenador, despues aparecera en la parte inferior derecha
(donde el reloj de windows), su icono le damos con el raton y
seleccionamos empezar servicios.
Una vez iniciados los servicios podemos ir a la carpeta c:\wamp\www\
(si aceptastes por defecto), en dicha carpeta es donde copiaremos los
archivos *.php y para verlos en accion pondremos en nuestro navegador
web http://localhost/... *.php,  http://localhost/
se incluye el nombre del archivo que hayamos creado para ver su ejecucion
en el navegador web.
Con esto ya podremos realizar las pruebas de php sin tener que subir archivos
a algun hosting.
El Wamp server, instala modulo apache, mysql (base de datos), php.
Mysql lo explicare en breve, por que enlazara con php, todo a su tiempo,
estamos empezando.

#Php Web en mantenimiento

<html>
<head></head>
<body>
<?php
$fecha=date("d");
if ($fecha<=2)
{ echo "sitio en mantenimiento"; }
else
{ echo "sitio en funcionamiento"; } ?>
</body>
</html>
Un ejemplo con mas utilidad
Abrir el bloc de notas y grabar el archivo en la carpeta www del
wampserver, nombrarlo como fecha.php por ejemplo.
Para ejecutarlo abrir el navegador web y poner localhost/fecha.php.
Antes de seguir, os indico que el codigo php se introduce dentro del
codigo html, este codigo php al contrario del html, es interpretado
por el servidor web y mandado como codigo html al navegador del
usuario.
Toda pagina html consta de <html> (inicio del codigo), <head>
(cabecera de la pagina),<body>(cuerpo de la pagina) donde introducimos
el codigo php que se inicia como <?php y cierra con >, el resto va cerrando
hasta que llega a </html> que es la etiqueta de cierre.
En el codigo de este ejemplo mediante la funcion date("d") obtenemos el
nº del dia del mes, el codigo evalua si es menor o igual a 2, para indicar que
esta en mantenimiento o si no cumple la condicion es que esta en
funcionamiento.
Este codigo sirve para poner una web en situacion de mantenimiento
automaticamente, imaginemos que siempre se hace el mantenimiento
los 2 primeros dias del mes.
Las ordenes en php acaban con ; , las variables empiezan siempre con el
simbolo $, el condicional incluido indica si (opcion a cumplir) entonces
(tal) sino cumple entonces (tal).

#Php

Para realizar webs con php es necesario tener algunos conocimientos de html.
Explicare algunas etiquetas de html para tener nociones.
Tambien es recomendable instalar WampServer o similar, para poder probar
el codigo sin tener que alojarlo en un servidor y poder hacer pruebas en
modo local.
Se puede realizar el codigo php con el notepad de windows, guardando el
archivo con la terminacion php en vez de txt.
Primer contacto con php
<html>
<head></head>

<?php
echo "SALUDO INICIAL";
?>
</body>
</html>

El codigo indicado arriba lo podremos escribir en cualquier editor de textos,
nombrandolo como inicio.php, por ejemplo.
Simplemente emite el mensaje SALUDO INICIAL en la web, el comando echo
sirve para mostrar mensajes en la pantalla, ya sean variables, textos o
numeros.
El codigo en si de php comienza con <?php y termina con ?>, el resto del codigo
es una web basica de HTML.
Toda web en html empieza por <html> y acaba con </html>, se compone de
etiquetas que abren y cierran, conteniendo dentro de ellas lo que deseamos
ver en la web.
Despues del inicio indicado viene la cabecera <head></head> donde podemos
mostrar el titulo de la web.
Por ultimo el cuerpo o body <body> </body>, dentro del cual va todo el
contenido de la web, incluyendo el codigo php.

viernes, 12 de abril de 2013

#JavaVisual

  Despues de obtener cierta base, pondre en este caso un ejemplo de programacion visual, en el que desarrollaremos un programa que calcule la multiplicacion de dos valores introducidos por el usuario.
  Como observaran en el video demostrativo se produce un error de calculo porque en la asignacion del segundo valor habia vuelto a escribir el primero, una vez comprobado se rectifica sobre la marcha.
  Abrimos Eclipse y seleccionamos nuevo proyecto, dentro del proyecto pulsamos con el boton derecho y seleccionamos Nuevo/Otras/Swin Designer/JFrame, indicamos el nombre y pasamos al codigo.
  Bajo el codigo tendremos dos pestañas Source (codigo) y Design (diseño), pulsamos diseño y veremos la parte visual, para poder poner los controles a nuestro antojo, pulsamos con el boton derecho en la ventana en modo diseño /setLayout/absoluteLayout.
  Despues insertamos tres controles Jlabel, dos JTextField y un JButton, camiandoles las propiedades de texto (para que aparezcan reflejadas en la ventana) y el nombre a utilizar como referencia en el codigo.
  Señalamos el boton y en propiedades marcamos action performer y pasamos al codigo que se ejecuta al pulsar boton, el codigo sera:
 
btnMultiplica.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int i1=Integer.parseInt(textField1.getText());
int i2=Integer.parseInt(textField2.getText());
int multiplica=i1*i2;
lblResultado.setText(String.valueOf(multiplica));
}
});

  Con getText obtenemos el valor introducido en el textField, con integer.parseInt lo transformamos en numero para poder operar.
  Con setText mostramos en el label el valor de la operacion convertido a string (cadena de caracteres) para poder mostrarlo en el Jlabel.
  Para que el lblResultado muestre el valor tenemos que definirlo como atributo de clase, lo señalamos y marcamos en la parte de propiedades el boton convert Local to Field (se ve claro en el video).

  El codigo completo de la aplicacion es: 

package EjemplosJava;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Multiplica extends JFrame {

private JPanel contentPane;
private JTextField textField1;
private JTextField textField2;
private JLabel lblResultado;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Multiplica frame = new Multiplica();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Multiplica() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JLabel lblNewLabel = new JLabel("Introduce Importe");
lblNewLabel.setBounds(23, 11, 109, 14);
contentPane.add(lblNewLabel);

JLabel lblNewLabel_1 = new JLabel("Introduce Importe");
lblNewLabel_1.setBounds(23, 54, 94, 14);
contentPane.add(lblNewLabel_1);

textField1 = new JTextField();
textField1.setBounds(160, 11, 86, 20);
contentPane.add(textField1);
textField1.setColumns(10);

textField2 = new JTextField();
textField2.setBounds(160, 54, 86, 20);
contentPane.add(textField2);
textField2.setColumns(10);

lblResultado = new JLabel("Resultado");
lblResultado.setBounds(241, 117, 61, 14);
contentPane.add(lblResultado);

JButton btnMultiplica = new JButton("Multiplica");
btnMultiplica.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int i1=Integer.parseInt(textField1.getText());
int i2=Integer.parseInt(textField2.getText());
int multiplica=i1*i2;
lblResultado.setText(String.valueOf(multiplica));
}
});
btnMultiplica.setBounds(99, 113, 89, 23);
contentPane.add(btnMultiplica);
}
}

 

martes, 9 de abril de 2013

#Android SqLite


  Abrimos Eclipse y pinchamos en Archivo / Nuevo / Android Ap
  Ponemos como nombre de aplicación GestionSqlite en package ejemplos.android.
  En este ejemplo desarrollamos una aplicacion simple que pueda operar con una base de datos SqLite.
  SqLite es una base de datos que se utiliza en muchos dispositivos desde pc a movil, es sencilla de manejar, como veremos a continuacion.
  Crearemos una aplicacion que permita introducir codigo, nombre e importe de ventas, como si se gestionaran los datos de vendedores.
  Bajo estas lineas pongo imagen de la actividad a crear, junto con el video.   


  video explicativo

  Empezamos:
  Creamos una nueva clase con el siguiente codigo.
package ejemplos.android;

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

public class GestionSQLiteOpenHelper extends SQLiteOpenHelper {
    public GestionSQLiteOpenHelper(Context context, String nombre, CursorFactory factory, int version) {
        super(context, nombre, factory, version);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table empleados(codigo integer primary key, nombre text, importe double)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int versionAnte, int versionNue) {
        db.execSQL("drop table if exists empleados");
        db.execSQL("create table empleados(cogigo integer primary key, nombre text, importe double)");      
    }  
}

  Despues introducimos el codigo de la clase principal:

package ejemplos.android;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
    private EditText et1, et2, et3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et1 = (EditText) findViewById(R.id.et1);
        et2 = (EditText) findViewById(R.id.et2);
        et3 = (EditText) findViewById(R.id.et3);
      }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    public void alta(View v) {
        GestionSQLiteOpenHelper gestion = new GestionSQLiteOpenHelper(this,
                "gestion", null, 1);
        SQLiteDatabase bd = gestion.getWritableDatabase();
        String codigo = et1.getText().toString();
        String nombre = et2.getText().toString();
        String importe = et3.getText().toString();
      
        ContentValues registro = new ContentValues();
        registro.put("codigo", codigo);
        registro.put("nombre", nombre);
        registro.put("importe", importe);
        bd.insert("empleados", null, registro);
        bd.close();
        et1.setText("");
        et2.setText("");
        et3.setText("");
        Toast.makeText(this, "Se cargaron los datos de la persona",
                Toast.LENGTH_SHORT).show();
    }
    public void consulta(View v) {
        GestionSQLiteOpenHelper gestion = new GestionSQLiteOpenHelper(this,
                "gestion", null, 1);
        SQLiteDatabase bd = gestion.getWritableDatabase();
        String codigo = et1.getText().toString();
        Cursor fila = bd.rawQuery(
                "select nombre,importe from empleados where codigo=" + codigo, null);
        if (fila.moveToFirst()) {
            et2.setText(fila.getString(0));
            et3.setText(fila.getString(1));
        } else
            Toast.makeText(this, "No existe una persona con dicho codigo",
                    Toast.LENGTH_SHORT).show();
        bd.close();
    }
    public void baja(View v) {
        GestionSQLiteOpenHelper gestion = new GestionSQLiteOpenHelper(this,
                "gestion", null, 1);
        SQLiteDatabase bd = gestion.getWritableDatabase();
        String codigo = et1.getText().toString();
        int cant = bd.delete("empleados", "codigo=" + codigo, null);
        bd.close();
        et1.setText("");
        et2.setText("");
        et3.setText("");
        if (cant == 1)
            Toast.makeText(this, "Se borró la persona con dicho documento",
                    Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(this, "No existe una persona con dicho documento",
                    Toast.LENGTH_SHORT).show();
    }
    public void modificacion(View v) {
        GestionSQLiteOpenHelper gestion = new GestionSQLiteOpenHelper(this,
                "gestion", null, 1);
        SQLiteDatabase bd = gestion.getWritableDatabase();
        String codigo = et1.getText().toString();
        String nombre = et2.getText().toString();
        String importe = et3.getText().toString();
        ContentValues registro = new ContentValues();
        registro.put("nombre", nombre);
        registro.put("importe", importe);
        int cant = bd.update("empleados", registro, "codigo=" + codigo, null);
        bd.close();
        if (cant == 1)
            Toast.makeText(this, "se modificaron los datos", Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(this, "no existe una persona con dicho codigo",
                    Toast.LENGTH_SHORT).show();
    }
}
En el codigo se introducen los metodos que se ejecutan al pulsar los botones, con el mismo nombre que introducimos en el evento click de cada boton.
Aparece tambien el evento Toast que permite realizar mensajes al usuario durante unos segundos.
En la primera clase se crea la tabla empleados con los campos indicados.
El codigo es autoexplicativo.
No olvidar nunca que despues de cualquier operacion hay que cerrar la base de datos con close, al igual que con los archivos como veremos en otra ocasion.