miércoles, 12 de junio de 2013

Resolucion iCarnegie Exersice13



Resolucion iCarnegie Exersice13


package exercise13;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;

/**
 * @author Chuy Juarez
 * Esto funciona totalmente modifique el archivo DataFile.txt y compruebe
 *Resuleto por Chuy Juarez
 */
public class Exercise13 {
static final String DATA_PATH ="DataFile.txt";
/**
* @param args not used in this project
*/
public static void main(String[] args)
{
Scanner fileReader = null;
try {
fileReader = new Scanner(new File(DATA_PATH));
} catch (FileNotFoundException e) {
System.out.println("The file "+DATA_PATH+" was not found!");
System.out.println("The program terminates now.");
System.exit(0);
}
System.out.println("Student's code goes here");
int limite=fileReader.nextInt(),contador=0;
System.out.println("Cantidad de cadenas "+limite+"\n");
while(contador<limite)
{
String cadena1=fileReader.next();
System.out.println("cadena "+(contador+1)+" "+cadena1);
contador++;
if(contador==limite)
{
limite=fileReader.nextInt();
contador=0;
System.out.println("\nCantidad de cadenas "+limite+"\n");
while(contador<limite)
{
cadena1=fileReader.next();
System.out.println("cadena "+(contador+1)+" "+cadena1);
contador++;
}
}

}

}

}

lunes, 10 de junio de 2013

Como ligar una Base de Datos a una Web

Primero creamos nuestro formulario


<!DOCTYPE html>
<html>
    <head>
        <title>Almacen</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form name="almacen" id="almacen" action="index.jsp" method="post">
            <table border="1" cellspacing="2" cellpadding="0">
                <thead>
                    <tr>
                        <td>
                            Dato
                        </td>
                        <td>
                            Informaci&oacute;n
                        </td>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>
                            Nombre del Producto
                        </td>
                        <td>
                            <input type="text" name="producto" id="producto"/> 
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Precio
                        </td>
                        <td>
                            <input type="text" name="precio" id="precio"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Cantidad
                        </td>
                        <td>
                            <select name="cantidad">
                                <option value="5.5">5.5 Kilos</option>
                                <option value="10.5">10.5 Kilos</option>
                                <option value="15.5">15.5 Kilos</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Fecha
                        </td>
                        <td>
                            <input type="date" name="fecha" id="fecha"/>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <input type="submit" name="guardar" value="Guardar"/>
                        </td>
                    </tr>
                </tbody>
            </table>
        </form>
        <div>TODO write content</div>
    </body>
</html>

por esta ocasión no aplicaremos validación ni estilo el tutorial pasado lo vimos así que podemos dar el estilo que mas nos agrade. (para validar con el archivo .js y para estilo con el .css).

Ahora creamos  nuestra clase java

package operacionesAlmacen;
import java.text.SimpleDateFormat;
import java.util.Date;
public class almacen 
{
    private String producto,fechaAux;
    private int precio;
    private double cantidad,total;
    private Date fecha;
    SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");

    public almacen() {
    }

    public String getProducto() {
        return producto;
    }

    public void setProducto(String producto) {
        this.producto = producto;
    }

    public String getFechaAux() {
        return fechaAux;
    }

    public void setFechaAux(String fechaAux) {
        this.fechaAux = fechaAux;
    }

    public int getPrecio() {
        return precio;
    }

    public void setPrecio(int precio) {
        this.precio = precio;
    }

    public double getCantidad() {
        return cantidad;
    }

    public void setCantidad(double cantidad) {
        this.cantidad = cantidad;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public double getTotal() {
        return total;
    }

    public void setTotal(double total) {
        this.total = total;
    }
    
    public void Total()
    {
        setTotal(precio*cantidad);
        try{
            setFecha(f.parse(fechaAux));
        }
        catch(Exception e){
            
        }
    }
}

esta clase recibirá los valores de html los cuales serán enviados por un archivo .jsp


Creamos nuestra conexión BD



package operacionesAlmacen;
//Se impota la libreria de SQL
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
//import com.mysql.jdbc.*;
public class Bd {
    //Se declaran las variales
    Connection conn;   //Variable conn de tipo Connection. Nos sirve para establecer la conexion.
    Statement smt;     //Variable smt de tipo Statement. Nos sirve para ejecutar sentencias sql
    ResultSet rs=null; //Variable rs de tipo ResultSet. Nos sirve para almacenar el resultado de una consulta SQL
    String mensaje="";// Variable para desplegar mensajes.


   
   
    /*Ahora realizamos un metodo para conectarse a la base de Datos
    para conestarse a una base de datos se necesitan tres cosas
    1.-El nombre de la base de datos 2.- usuario 3.- pasdword
    El throws nos sirve para que el error no lo maneje el metodo el SQLException es solo para que se encarge de los errores de sintaxis SQL*/
                           
    public Bd(String bd, String user, String password)
    {
                          // Bd recibe el nombre de la base de datos
                          // user recibe el nombre del usuario
                          // password recibe la contraseña del usuario
        String url="jdbc:mysql://localhost/"+bd;
       
        try{
            Class.forName("com.mysql.jdbc.Driver");
            conn=DriverManager.getConnection(url,user,password); // abre la conexion y se guarda en conn
            smt=conn.createStatement();  //smt queda preparada para realizar ejecutar sentencias sql
            mensaje= "Coneccion realizada correctamente a la base de datos :"+url;          
            //System.out.println(mensaje);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Bd.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch(SQLException e){
            mensaje="Error al conectar a la base de datos \nError:"+e;
            //System.out.println(mensaje);
        }
       
    }
    public String desconectarBd(){
    String texto;
   
    try{
        conn.close();
        texto="BD desconectada exitosamente";
    }
    catch(Exception e){
        texto="Error al desconectar la BD";
    }
    return texto;
}

   
    public ResultSet consultaBd(String sql){      
        try {
            rs=smt.executeQuery(sql);
           
            mensaje="consulta ejecutada correctamente";          
        }
    catch(Exception e){
        mensaje="Error en la consulta a la tabla de la BD "+e+" sql "+sql;
    }
    return rs;
    }  

    public String actualizaBd(String sql){
        String texto;
        try{
            smt.executeUpdate(sql);
            texto="Actualización correcta";
        }
        catch(Exception e){
            texto="Error al ejecutar la actualización "+e+" sql "+sql;
        }
        return texto;
    }

}


esto realizara la conexión entre la aplicación web y la base de datos.

Para esto debemos tener una Base de Datos

crearemos una pequeña base el siguiente comando copias y pegas todo tal como esta.

create database almacen;
use almacen;
create table Datos(id  int unsigned auto_increment primary key,
Producto char(15),
Precio int,
Cantidad double,
Fecha date,
Total double
);

con esto crearemos una base llamada almacén con una tabla llamada Datos y unos campos llamados
id, Producto, Precio, Cantidad, Fecha Total.

Creamos una clase java la cual ejecutara las sentencias sql

package operacionesAlmacen;
public class operacionesBd 
{
    almacen a;
    String sql;
    Bd bd=new Bd("almacen","root","utsjr");/*almacen es el nombre de mi base de datos root es el administrador y utsjr es la contraseña*/

    public operacionesBd(almacen a) {
        this.a = a;
    }
    public void insertarNuevosProductos()throws Exception
    {
        sql="insert into datos (Producto,Precio,Cantidad,Fecha,Total)"
                + "values ('"+a.getProducto()+"',"+a.getPrecio()+","+a.getCantidad()+",'"+a.getFechaAux()+"',"+a.getTotal()+")";
        
        System.out.println("sql"+sql);
        bd.actualizaBd(sql);       
    }
    
}



Después creamos el .jsp que sera nuestra pagina dinámica y nos ayudara a pasar los datos de .html a .java


<%@page import="operacionesAlmacen.almacen"%>
<%@page import="operacionesAlmacen.operacionesBd"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Almacen</title>
    </head>
    <body>
        <%
        almacen a=new almacen();
        a.setProducto(request.getParameter("producto"));
        a.setPrecio(Integer.parseInt(request.getParameter("precio")));
        a.setFechaAux(request.getParameter("fecha"));
        a.setCantidad(Double.parseDouble(request.getParameter("cantidad")));
        a.Total();
        operacionesBd obd=new operacionesBd(a);
        obd.insertarNuevosProductos();      
        %>
        <table border="1" cellspacing="2" cellpadding="0">
                <thead>
                    <tr>
                        <td>
                            Dato
                        </td>
                        <td>
                            Informaci&oacute;n
                        </td>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>
                            Nombre del Producto
                        </td>
                        <td>
                            <% out.print(a.getProducto()); %>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Precio
                        </td>
                        <td>
                            <% out.print(a.getPrecio()); %>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Cantidad
                        </td>
                        <td>
                            <% out.print(a.getCantidad()); %>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Fecha
                        </td>
                        <td>
                            <% out.print(a.getFecha());
                            %>
                        </td>
                    </tr>
                </tbody>
            </table>
    </body>
</html>


aquí importamos todas las clases de java  ahora podemos ejecutar el programa y analizar como funciona dudas o aclaraciones gto.aje.2@hotmail.com