domingo, 30 de octubre de 2016

TRABAJO DE DESARROLLO DE SOFTWARE (STATEMENT)





                                      UNIVERSIDAD POLITÉCNICA AMAZÓNICA


INGENIERÍA DE SISTEMAS Y TELEMATICA

DOCENTE           : Marco Aurelio Porro Chulli.
ASIGNATURA      : Desarrollo de Software I.
GRUPO               : “A”
INTEGRANTES   :
                     Yanina Bustamante Jibaja.

                     Yenny Isabel Cuello Morón.
I.       

       Statement

   1.    Contenido


La clase Statement

El objeto Statement (sentencia) sirve para procesar una sentencia SQL estática y obtener los resultados producidos por ella. Solo puede haber un ResultSet abierto para cada objeto Statement en un momento dado. Todos los métodos statement que procesan una sentencia SQL cierran implícitamente el ResultSet actual de una sentencia si existe uno abierto.
Un objeto Statement se usa para enviar sentencias SQL a la base de datos. Actualmente hay tres tipos de objetos Statement, todos los cuales actúan como contenedores para la ejecución de sentencias en una conexión dada: Statement, PreparedStatement que hereda de Statement y CallableStatement que hereda de PreparedStatement. Estas estàn especializadas para enviar tipos particulares de sentencias SQL, Un objeto Statement se usa para ejecutar una sentencia SQL simple sin parámetros. Un objeto PreparedStatement se usa para ejecutar sentencias SQL precompiladas con o sin parámetros IN; y un objeto CallableStatement se usa para ejecutar un procedimiento de base de datos almacenado.
La interface Statement suministra métodos básicos para ejecutar sentencias y devolver resultados. La interface PreparedStatement añade métodos para trabajar con los parámetros IN; y la interface CallableStatement añade métodos para trabajar con parameters OUT.

Creación de objetos Statement

Una vez establecida la conexión con una base de datos particular, esta conexión puede usarse para enviar sentencias SQL. Un objeto Statement se crea mediante el método de Connection createStatement, como podemos ver en el siguiente fragmento de código.
Connection con = DriverManager.getConnection(url, "sunny", "");
Statement stm = con.createStatement();

Realización de Statement


La sentencia SQL que será enviada a la base de datos es alimentada como un argumento a uno de los métodos de ejecución del objeto Statement.
Por ejemplo:
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");

Ejecución de sentencias usando objetos Statement.

La interface Statement nos suministra tres métodos diferentes para ejecutar sentencias SQL, executeQuery, executeUpdate y execute. El método a usar está determinado por el producto de la sentencia SQL

El método executeQuery: Está diseñado para sentencias que producen como resultado un único result set tal como las sentencias SELECT. 

El método executeUpdate: Se usa para ejecutar sentencias INSERT, UPDATE ó DELETE, así como sentencias SQL DDL (Data Definition Language) como CREATE TABLE o DROP TABLE. El efecto de una sentencia INSERT, UPDATE o DELETE es una modificación de una o más columnas en cero o más filas de una tabla. El valor devuelto de executeUpdate es un entero que indica el número de filas que han sido afectadas (referido como update count). Para sentencias tales como CREATE TABLE o DROP TABLE, que no operan sobre filas, le valor devuelto por executeUpdate es siempre cero.

El método execute: Se usa para ejecutar sentencias que devuelven más de un result set, más que un update count o una combinación de ambos. Como es esta una característica avanzada que muchos programadores no necesitaran nunca se verá en su propia sección.
Todos los métodos que ejecutan sentencias cierran los objetos Resultset abiertos como resultado de las llamadas a Statement. Esto quiere decir que es necesario completar el proceso con el actual objeto Resulset antes de reejecutar una sentencia Statement.
Debe notarse que la interface PreparedStatement, que hereda los métodos de la interface Statement, tiene sus propias versiones de los métodos executeQuery, executeUpdate y execute. Los objetos Statement en sí mismos no contienen una sentencia SQL, por tanto, debe suministrarse como un argumento a los métodos Statement. Execute. Los objetos PreparedStatement no suministran una sentencia SQL como argumento a estos métodos puesto que ya tienen la sentencia precompilada. Los objetos CallableStatement heredan las formas de estos métodos de PreparedStatement. Usar un parámetro de query con las versiones de los métodos de PreparedStatement o CallableStatement producirá una SQLException.

Cuando una conexión está en modo auto-commit, las sentencias ejecutadas son ‘comitadas’ o rechazadas cuando se completan. Una sentencia se considera completa cuando ha sido ejecutada y se han devuelto todos los resultados. Pare el método executeQuery, que devuelve un único result set, la sentencia se completa cuando todas las filas del objeto ResultSet se han devuelto. Para el método executeUpdate, una sentencia se completa cuando se ejecuta. En los raros casos en que se llama al método execute, de cualquier modo, no se completa hasta que los result sets o update counts que se generan han sido devueltos.
Algunos DBMS tratan cada sentencia en un procedimiento almacenado como sentencias separadas. Otros tratan el procedimiento entero como una sentencia compuesta. Esta diferencia se convierte en importante cuando está activo el modo auto-commit porque afecta cuando se llama al método commit. En el primer caso, cada sentencia individual es commitada. En el segundo, se commiten todas juntas.

Cerrar objetos Statement.

Los objetos Statement se cerrarán automáticamente por el colector de basura de Java (garbage collector). No obstante, se recomienda como una buena práctica de programación que se cierren explícitamente cuando no sean ya necesarios. Esto libera recursos DBMS inmediatamente y ayuda a evitar potenciales problemas de memoria.


Ejemplo:


//Establecemos la conexión con la base de datos. 

Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/prueba","root", "la_clave");

// Preparamos la consulta 

Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");

// Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en pantalla. 

while (rs.next())
{
    System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3));
}

// cerramos la conexión de base de datos.

Conexión.close()


2.    Resumen

Sirve para procesar una sentencia SQL estática y obtener los resultados producidos por ella. Solo puede haber un ResultSet abierto para cada objeto Statement en un momento dado.


3.    Summary

It serves to process a static SQL statement and obtaining the results produced by it. There can only be an open ResultSet object for each Statement at any given time.



4.    Recomendaciones

o   El método statement para ejecutarla depende del tipo de sentencia SQL que contenga

o   Debemos tener en cuenta que las sentencias se cierran con el método
public void close() trows java.sql.SQLException.


5.    Conclusión

Todas la variables de conexión (cn), Statement (St) y ResultSet(reg) fueron declaradas fuera de todos los métodos, es decir son globales y pueden verse en toda la clase no importa en qué proceso lo utilicemos, y para saldar la duda, anteriormente dije que todos estos son métodos, así es pero por que ejecutar y consulta los llame funciones, es sencillo recordemos algo de teoría, toda función retorna un valor es por ello que se le llama funciones a ejecutar y a consulta por que regresan el valor de la variable error y  respectivamente.

6.    Apreciación del Equipo

Esta clase Statement es muy importante porque a través de la conexión nos comunicamos con la Base de Datos, enviándole sentencias SQL.

7.    Glosario de Términos

Parámetros: representa un dato que se ofrece una función con un fin específico. Por ejemplo, una rutina que tenga como finalidad devolver el número más alto de una lista, esperará que le pasemos dicho conjunto de valores como parámetro para realizar su tarea.
Hereda: La herencia facilita la creación de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (métodos) y eventualmente los atributos (variables) de su superclase.
Extensión: es una cadena de caracteres anexada al nombre de un archivo, usualmente precedida por un punto. Su función principal es diferenciar el contenido del archivo de modo que el sistema operativo disponga el procedimiento necesario para ejecutarlo o interpretarlo, sin embargo, la extensión es solamente parte del nombre del archivo y no representa ningún tipo de obligación respecto a su contenido
Servidor: es una aplicación en ejecución (software) capaz de atender las peticiones de un cliente y devolverle una respuesta en concordancia. Los servidores se pueden ejecutar en cualquier tipo de computadora.
Interfaz: En informática se utiliza para nombrar a la conexión funcional entre dos sistemas o dispositivos de cualquier tipo dando una comunicación entre distintos niveles. Su plural es interfaces.

8.    Bibliografía o Linkografia

Link de las Diapositivas del Tema STATEMENT















lunes, 24 de octubre de 2016

TRABAJO DE DESARROLLO DE SOFTWARE(CONNECTION)









TEMA: Connection

1.    Contenido

·    Definición

Connection representa una conexión a una Base de datos dada, luego representa el lugar adecuado para el manejo de transacciones, dado que estas afectan a todas las sentencias ejecutadas sobre una conexión a la base de datos.
Por defecto, una conexión funciona en modo autocommit, es decir, cada vez que se ejecuta una sentencia SQL se abre y se cierra automáticamente una transacción, que sólo afecta a dicha sentencia. Es posible modificar esta opción mediante setAutoCommit (), mientras que getAutoCommit () indica si se está en modo autocommit o no. Si no se está trabajando en modo autocommit será necesario que se cierren explícitamente las transacciones mediante commit() si tienen éxito, o rollback(), si fallan; nótese que, tras cerrar una transacción, la próxima vez que se ejecute una sentencia SQL se abrirá automáticamente una nueva, por lo que no existe ningún método del tipo que permita iniciar una transacción.
La interfaz Connection, cuando se utiliza uno de los métodos anteriormente mencionados se obtiene un objeto de tipo Connection que representa como es de esperar la conexión con la base de datos. El objeto obtenido cuenta con varios métodos. Dos de los más importantes son: public abstract Statement createStatement() throws SQLException public abstract void close() throws SQLException El primero de los métodos sirve para crear un objeto del tipo Statement. Las frases SQL se ejecutan normalmente mediante la utilización de objetos del tipo Statement. Finalmente, es conveniente cerrar las conexiones tan pronto como dejen de utilizarse para liberar recursos.
El objeto Connection representa una conexión HTTP entre la prueba dinámica (el cliente) y el servidor Web. La prueba abre la conexión, aunque tanto la prueba como el servidor Web pueden cerrarla. Se pueden enviar múltiples solicitudes mediante una sola conexión, siempre que esta última permanezca abierta.


Data Source:
DSN=Nombre ODBC de la Base de Datos
Usuario:
UID=Nombre de Usuario
Password:
PWD=Password del usuario para la base de datos




Propiedades

ConnectionString

Especifica la referencia a la base de datos con la cual queremos conectar, conteniendo en una cadena de texto la información necesaria para efectuar esa conexión mediante parejas de valores separadas por ";".

Los valores que podemos asignar  son:


Ejemplo:

<% conexion.ConnectionString="DSN=MIOdbc;UID=pepe;PWD=1234"       %>

Mode

Especifica los permisos de la  conexión.

Algunos de los valores más habituales que podemos asignar son:

1     Establece permiso solo de  Lectura
2    Establece permiso solo de  Escritura
3    Establece permiso de  Lectura/Escritura

Ejemplo:

<% conexion.Mode=3   %>


 

 

Propiedad
Descripción
Comprueba si la conexión está abierta.
Obtiene el número del puerto utilizado por la conexión.
Obtiene o define el número de redirecciones de encabezados HTTP que se siguen.
Obtiene el nombre del host o dirección IP del servidor al que está conectado el cliente.
Comprueba si la conexión HTTP entre el cliente y el servidor utiliza el protocolo SSL ("https://").

     

      Métodos

 

Método
Descripción
Cierra la conexión, si está abierta. No devuelve un error si la conexión ya está cerrada.
Envía una solicitud HTTP al servidor.

Métodos: 

BeginTrans

Abre una transacción; todas las operaciones que realicemos a partir de ese momento no serán efectivas hasta que no cerremos la  transacción.

Ejemplo:

<% conexion.BeginTrans      %>

          Close 

Cierra el    objeto

Ejemplo:

<% conexion.close     %>

CommitTrans 

Cierra una transacción haciendo efectivos los cambios efectuados dentro de ella.;

Ejemplo:

<% conexion.CommitTrans        %>

Execute 

Ejecuta una sentencia SQL contra la base de     datos.

Ejemplo:

<% Set resultado=conexion.execute (Select * from amigos)    %>

Open 

Abre la conexión con los parámetros especificados en las propiedades.

Ejemplo:

<% conexion.open     %>


RollBackTrans 

Deshace todos los cambios efectuados en la base de datos desde el inicio de la transacción. 


Ejemplo:

<% conexion.RollBackTrans %>

 Ejemplo

package servicios;
import java.sql.*;
public class Conexion {
   private static Connection cnx = null;
   public static Connection obtener() throws SQLException, ClassNotFoundException {
      if (cnx == null) {
         try {
            Class.forName("com.mysql.jdbc.Driver");
            cnx = DriverManager.getConnection("jdbc:mysql://localhost/java_mysql", "root", "");
         } catch (SQLException ex) {
            throw new SQLException(ex);
         } catch (ClassNotFoundException ex) {
            throw new ClassCastException(ex.getMessage());
         }
      }
      return cnx;
   }
   public static void cerrar() throws SQLException {
      if (cnx != null) {
         cnx.close();
      }
   }
}


2.   Resumen

Connection representa una conexión a una Base de datos dada, luego representa el lugar adecuado para el manejo de transacciones, dado que estas afectan a todas las sentencias ejecutadas sobre una conexión a la base de datos.
La interfaz Connection, cuando se utiliza uno de los métodos anteriormente mencionados se obtiene un objeto de tipo Connection que representa como es de esperar la conexión con la base de datos. El objeto obtenido cuenta con varios métodos. Dos de los más importantes son: public abstract Statement createStatement () throws SQLException, public abstract void close () throws SQLException El primero de los métodos sirve para crear un objeto del tipo Statement. Las frases SQL se ejecutan normalmente mediante la utilización de objetos del tipo Statement.
Dentro de esto tenemos sus propiedades importantes ConnectionString  y Mode.

3. Sumary

Connection represents a connection to a given database, then represents the right place for handling transactions, as these affect all statements executed on a connection to the database.
The Connection interface, when one of the above methods is used Connection object type that represents as expected the connection to the database is obtained. The returned object has several methods. Two of the most important are: public abstract createStatement Statement () throws SQLException, public abstract void close () throws SQLException The first method is used to create an object of type Statement. SQL statements are normally executed using Statement objects of type.
Within this we have important properties ConnectionString and Mode.


4.   Recomendaciones

Es importante manejar la estructura del lenguaje de Java para poder definir bien todo el objeto connection para poder hacer un buen proyecto y no tener errores.
Es muy importante importar importar la librería JDBC.

5.   Conclusiones

Podemos concluir que en lenguaje Java brinda grandes facilidades para establecer conexiones a base de datos, una de las mejores prácticas que podemos seguir cuando nos conectamos a una base de datos es siempre dejar configurada la ruta de acceso o credenciales fuera de nuestro código, esto con el fin de que el mantenimiento del sistema sea menos costoso.
Todo lo anterior se logra gracias a la Java Database Conectivity el cual es un estándar que nos ayuda a conectarnos a cualquier tipo de base de datos, de una u otra forma podremos establecer conexión a base de datos ya sea Mysql, Oracle, Postgresql y otras, lo importante a tener en cuenta es que el driver esté importado en nuestro classpath, que para este post lo hemos hecho con ayuda de Maven.

6. Apreciación del Equipo

     Manejar el lenguaje de programación Java es muy importante por los buenos beneficios,      porque nos ayuda administrar una base de datos y así conocer su estudio mediante              muchas técnicas de aprendizajes sobre todo como nosotros podemos acceder con la           clase connection a la base de datos desde java.

7.   Glosario

       Maven: es una herramienta de software para la gestión y construcción de proyectos           Java creada por Jason van Zyl, de Sonatype, en 2002. Es similar en funcionalidad a             Apache Ant (y en menor medida a PEAR de PHP y CPAN de Perl), pero tiene un                  modelo de configuración de construcción más simple, basado en un formato XML.

      Commit: En el contexto de la Ciencia de la computación y la gestión de datos, commit       (acción de comprometer) se refiere a la idea de consignar un conjunto de cambios                "tentativos" de forma permanente. Un uso popular es al final de una transacción de base       de datos.

       rollback: En tecnologías de base de datos, un rollback o reversión es una operación           que devuelve a la base de datos a algún estado previo.

       createStatement: Método createStatement (ISQLServerConnection) Crea un objeto            SQLServerStatement para enviar instrucciones SQL a la base de datos.

       Autocommit: es decir, cada vez que se ejecuta una sentencia SQL se abre y se cierra        automáticamente una transacción, que sólo afecta a dicha sentencia.

      SQLException: es una ampliación de java.lang.Exception y proporciona información             adicional relacionada con las anomalías que se producen en un contexto de base de         datos. Específicamente, en una SQLException está disponible la siguiente información:       Texto descriptivo. SQLState.

       Execute: Ejecutar

8. Linkografia