viernes, 7 de junio de 2013



4.1 ODBC 

INTRODUCCION


Open DataBase Connectivity (ODBC) es un estándar de acceso a las bases de datos desarrollado por SQL Access Group en 1992. El objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicación, sin importar qué sistema de gestión de bases de datos (DBMS) almacene los datos. ODBC logra esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de Cliente SQL, entre la aplicación y el DBMS. El propósito de esta capa es traducir las consultas de datos de la aplicación en comandos que el DBMS entienda. Para que esto funcione tanto la aplicación como el DBMS deben ser compatibles con ODBC, esto es que la aplicación debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos. Desde la versión 2.0 el estándar soporta SAG y SQL.


Imagen:






Significado:

Open Data Base Conectivity


DESARROLLO

Es una, conectividad abierta de bases de datos. Si escribimos una aplicación para acceder a las tablas de una DB de Access, ¿qué ocurrirá si después queremos que la misma aplicación, y sin reescribir nada, utilice tablas de SQL Server u otra DB cualquiera? La respuesta es sencilla: no funcionará. Nuestra aplicación, diseñada para un motor concreto, no sabrá dialogar con el otro. Evidentemente, si todas las DB funcionaran igual, no tendríamos este problema.... aunque eso no es probable que ocurra nunca.

Pero si hubiera un elemento que por un lado sea siempre igual, y por el otro sea capaz de dialogar con una DB concreta, solo tendríamos que ir cambiando este elemento, y nuestra aplicación siempre funcionaría sin importar lo que hay al otro lado... algo así como ir cambiando las boquillas de una manguera. A esas piezas intercambiables las llamaremos orígenes de datos de ODBC

Casi todas las DB actuales tienen un ODBC. Debido a que este elemento impone ciertas limitaciones, ya que no todo lo que la DB sabe hacer es compatible con la aplicación, como velocidad de proceso, tiempos de espera, máxima longitud de registro, número máximo de registros, versión de SQL, etc., está cayendo en desuso a cambio de otras técnicas de programación, pero aún le quedan muchos años de buen servicio.

Todo lo referido aquí funciona con Windows NT Server 4.0 con el Service Pack 4 o superior instalado (el último publicado es el 6). El Option Pack 4 para actualizar el IIS y las extensiones ASP. SQL Server 6.5 y Access 97. Por supuesto, también funciona con las versiones modernas de servidores como 2003 Server, y también XP PRO, que lleva un IIS 5.0 de serie. Igualmente es posible utilizar bases de datos de Access 2000 o 2003.

Esas otras técnicas de programación antes mencionadas, se utilizan ya en el nuevo Windows 2003, Office 2003 y SQL Server 2000, que además de ODBC pueden utilizar.... pero esa es otra historia.

Esta es la idea: por un lado el ODBC provee de unas caracteríisticas siempre homogéneas, y por el otro permite distintos controladores que aseguran la conectividad de la aplicación con diferentes bases de datos.


Ahora que ya sabemos qué es y para lo que sirve, procedamos a su instalación: es un proceso sencillo, pero según la base de datos elegida sea Access o SQL Server, cambian un poco, y como no podía ser menos, hay algunos trucos que conviene conocer.

REQUERIMIENTOS

El software funciona de dos modos, con un software manejador en el cliente, o una filosofía cliente-servidor. En el primer modo, el driver interpreta las conexiones y llamadas SQL y las traduce desde el API ODBC hacia el DBMS. En el segundo modo para conectarse a la base de datos se crea una DSN dentro del ODBC que define los parámetros, ruta y características de la conexión según los datos que solicite el creador o fabricante.
Java Database Connectivity (JDBC) es un derivado inspirado en el mismo, una interfaz de programación de aplicaciones que permite la ejecución de operaciones sobre bases de datos desde ellenguaje de programación Java independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede utilizando el dialecto SQL del modelo de base de datos que se utilice.



4.2 ADO.NET

INTRODUCCION


ADO.NET es un conjunto de componentes del software que pueden ser usados por los programadores para acceder a datos y a servicios de datos. Es una parte de la biblioteca de clases base que están incluidas en el Microsoft .NET Framework. Es comúnmente usado por los programadores para acceder y para modificar los datos almacenados en un Sistema Gestor de Bases de Datos Relacionales, aunque también puede ser usado para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolución de la tecnología ActiveX Data Objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido como un producto enteramente nuevo.

IMAGEN:


SIGNIFICADO: MICROSOFT ACTIVEX DATA OBJECTS DE LA PLATAFORMA.NET

DESARROLLO

Data provider 
Estas clases proporcionan el acceso a una fuente de datos, como Microsoft SQL Server y Oracle. Cada fuente de datos tiene su propio conjunto de objetos del proveedor, pero cada uno tienen un conjunto común de clases de utilidad:
·         Connection: Proporciona una conexión usada para comunicarse con la fuente de datos. También actúa como Abstract Factory para los objetos command.
·         Command: Usado para realizar alguna acción en la fuente de datos, como lectura, actualización, o borrado de datos relacionales.
·         Parameter: Describe un simple parámetro para un command. Un ejemplo común es un parámetro para ser usado en un procedimiento almacenado.
·         DataAdapter: "Puente" utilizado para transferir data entre una fuente de datos y un objeto DataSet (ver abajo).
·         DataReader: Es una clase usada para procesar eficientemente una lista grande de resultados, un registro a la vez.
DataSets 
Los objetos DataSets, es un grupo de clases que describen una simple base de datos relacional en memoria, fueron la estrella del show en el lanzamiento inicial (1.0) del Microsoft .NET Framework. Las clases forman una jerarquía de contención:
·         Un objeto DataSet representa un esquema (o una base de datos entera o un subconjunto de una). Puede contener las tablas y las relaciones entre esas tablas.
·         Un objeto DataTable representa una sola tabla en la base de datos. Tiene un nombre, filas, y columnas.
·         Un objeto DataView "se sienta sobre" un DataTable y ordena los datos (como una cláusula "order by" de SQL) y, si se activa un filtro, filtra los registros (como una cláusula "where" del SQL). Para facilitar estas operaciones se usa un índice en memoria. Todas las DataTables tienen un filtro por defecto, mientras que pueden ser definidos cualquier número de DataViews adicionales, reduciendo la interacción con la base de datos subyacente y mejorando así el desempeño.
·         Un DataColumn representa una columna de la tabla, incluyendo su nombre y tipo.
·         Un objeto DataRow representa una sola fila en la tabla, y permite leer y actualizar los valores en esa fila, así como la recuperación de cualquier fila que esté relacionada con ella a través de una relación de clave primaria - clave extranjera.
·         Un DataRowView representa una sola fila de un DataView, la diferencia entre un DataRow y el DataRowView es importante cuando se está interactuando sobre un resultset.
·         Un DataRelation es una relación entre las tablas, tales como una relación de clave primaria - clave ajena. Esto es útil para permitir la funcionalidad del DataRow de recuperar filas relacionadas.
·         Un Constraint describe una propiedad de la base de datos que se debe cumplir, como que los valores en una columna de clave primaria deben ser únicos. A medida que los datos son modificados cualquier violación que se presente causará excepciones.
Un DataSet es llenado desde una base de datos por un DataAdapter cuyas propiedades Connection y Command que han sido iniciados. Sin embargo, un DataSet puede guardar su contenido a XML (opcionalmente con un esquema XSD), o llenarse a sí mismo desde un XML, haciendo esto excepcionalmente útil para los servicios web, computación distribuida, y aplicaciones ocasionalmente conectadas desconectados.

ADO.NET y Visual Studio .NET
En el IDE Visual Studio .NET existe la funcionalidad para crear las subclases especializadas de las clases del DataSet para un esquema particular de base de datos, permitiendo el acceso conveniente a cada campo a través de propiedades fuertemente tipadas. Esto ayuda a capturar más errores de programación en tiempo de compilación y hace más útil la característica Intellisense del IDE.

ADO.NET Entity Framework 
El ADO.NET Entity Framework es un conjunto de APIs de acceso a datos para el Microsoft .NET Framework, apuntando a la versión de ADO.NET que se incluye con el .NET Framework 3.5. Fue lanzado como actualización separada junto con el Service Pack 1 para el .NET Framework, después del lanzamiento de tanto el .NET Framework 3.5 y el Visual Studio 2008. Una nueva versión del Entity Framework (v 4.0) será liberada junto al Visual Studio 2010 y el .NET Framework 4.0.
Una entidad del Entity Framework es un objeto que tiene una clave representando la clave primaria de una entidad lógica de datastore. Un modelo conceptual Entity Data Model (modelo Entidad-Relación) es mapeado a un modelo de esquema de datastore. Usando el Entity Data Model, el Framework permite que los datos sean tratados como entidades independientemente de sus representaciones del datastore subyacente.
El Entity SQL es un lenguaje similar al SQL para consultar el Entity Data Model (en vez del datastore subyacente). Similarmente, las extensiones del Linq, Linq-to-Entities, proporcionan consultas tipeadas en el Entity Data Model. Las consultas Entity SQL y Linq-to-Entities son convertidas internamente en un Canonical Query Tree que entonces es convertido en una consulta comprensible al datastore subyacente (ej. en SQL en el caso de una base de datos relacional). Las entidades pueden utilizar sus relaciones, y sus cambios enviados de regreso al datastore.
ADO.NET Data Services 
Artículo principal: ADO.NET Data Services.
También conocido como WCF Data Services, su nombre clave es "Astoria".
Es una plataforma para que Microsoft llame a los servicios de datos, es una combinación del tiempo de ejecución y un servicio web a través del cual los servicios se exponen. Además, también incluye el Data Services Toolkit que permite a Astoria Data Services crearse desde dentro de ASP.NET. El proyecto fue anunciado en Astoria MIX 2007, y la primera vista previa para desarrolladores se puso a disposición el 30 de abril de 2007. El CTP primero se hizo disponible como parte de la ASP.NET 3.5 Vista previa de extensiones. El cambio de nombre de ADO.NET Data Services para WCF Data Services se anunció en el 2009.

REQUERIMIENTOS

Requerimientos técnicos
A continuación se muestran los requerimientos técnicos para el software Acelerador ADO.NET *.
·         Windows 2000, Windows XP, Windows 2003 Server o Windows Vista
·         .NET Framework 1.0 o superior
·         128 MB RAM
·         15 MB en disco duro
* Nota: El instalador del software requiere tener instalado .NET Framework 2.0 para poder ejecutarse.



4.3 JDBC


INTRODUCCION

Es una API que permite la ejecución de operaciones sobre bases de datosdesde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice.
El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de conexiones hacia un modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos de localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo una conexión; para ello provee el localizador a la base de datos y los parámetros de conexión específicos. A partir de allí puede realizar cualquier tipo de tarea con la base de datos a la que tenga permiso: consulta, actualización, creación, modificación y borrado de tablas, ejecución de procedimientos almacenados en la base de datos.

SIGNIFICADO

Java Database Connectivity



IMAGEN:

DESARROLLO

Interfaz de nivel de llamada, como JDBC están programando interfaces que permiten el acceso externo a los comandos de actualización de la manipulación y la base de datos SQL. Permiten la integración de SQL pone en un entorno de programación en general, proporcionando rutinas de la biblioteca que interactúan con la base de datos. En particular, basado en JDBC Java tiene una rica colección de rutinas que hacen que este tipo de interfaz muy sencilla e intuitiva.
Aquí está una manera fácil de visualizar lo que sucede en una interfaz de nivel de llamada: Usted está escribiendo un programa normal de Java. En algún lugar en el programa, es necesario interactuar con una base de datos.Utilizando las rutinas de la biblioteca estándar, se abre una conexión con la base de datos. A continuación, utiliza JDBC para enviar el código SQL a la base de datos y procesar los resultados que se devuelven. Cuando haya terminado, se cierra la conexión.
Este enfoque tiene que ser contrastada con la ruta precompilación tomada con Embedded SQL. Este último tiene un paso de precompilación, donde el código SQL embebido se convierte en el código de lenguaje principal (C / C + +). Interfaz de nivel de llamada no necesitan precompilación y así evitar algunos de los problemas de SQL incorporado. El resultado es una mayor portabilidad y una relación de cliente-servidor más limpio.

El establecimiento de una conexión

La primera cosa a hacer, por supuesto, es la instalación de Java, JDBC y el DBMS en los equipos de trabajo. Como queremos interactuar con una base de datos Oracle, necesitaríamos un controlador para esta base de datos específica también. Afortunadamente, tenemos un administrador responsable que ya ha hecho todo esto por nosotros en la máquinas Leland.
Como hemos dicho anteriormente, antes de acceder a una base de datos, una conexión debe abrirse entre nuestro programa (cliente) y la base de datos (servidor). Esto implica dos pasos:

Cargue el controlador específico del proveedor
¿Por qué necesitamos este paso? Para garantizar la portabilidad y la reutilización de código, la API fue diseñado para ser lo más independiente de la versión o el vendedor de una base de datos como sea posible. Desde diferentes DBMS a tener un comportamiento diferente, tenemos que decirle al administrador de controladores DBMS que queremos usar, para que pueda invocar el controlador correcto.

Un conductor de Oracle es cargado usando el siguiente fragmento de código:
      Class.forName ("oracle.jdbc.driver.OracleDriver")
Haga la conexión
Una vez que el conductor está cargado y listo para la conexión a realizar, es posible crear una instancia de un objeto Connection usando:

   Connection con = DriverManager.getConnection (
      "Jdbc: oracle: thin: @ dbaprod1: 1544: SHR1_PRD", nombre de usuario, contraseña);
Bueno, vamos a ver lo que esta jerga es. La primera cadena es la dirección URL de la base de datos con el protocolo (JDBC) , el vendedor (oráculo) , el conductor (delgado) , el servidor (dbaprod1) , el número de puerto (1521) , y una instancia de servidor (SHR1_PRD) . El nombre de usuario y passwd es el nombre de usuario y contraseña, la misma que deberá introducir en SQLPLUS para acceder a su cuenta.

Eso es todo! La conexión a devolver en el último paso es una conexión abierta que usaremos para pasar sentencias de SQL para la base de datos. En este fragmento de código, con una conexión abierta, y vamos a utilizarlo más adelante. Nota: Los valores mencionados anteriormente son válidas para el medio ambiente (Leland). Ellos tendrían valores diferentes en otros entornos.

Creación de sentencias JDBC
A JDBC Declaración de objeto se utiliza para enviar las sentencias SQL al DBMS, y no debe ser confundido con una sentencia SQL. Un JDBC Declaración de objeto se asocia con una conexión abierta, y no cualquier sola instrucción SQL. Usted puede pensar en un JDBC Declaración objeto como un canal que se sienta en una conexión, y pasando una o más de las sentencias SQL (que se le pida que ejecute) al DBMS.
Se necesita una conexión activa para crear una declaración objeto. El siguiente fragmento de código, utilizando nuestra conexión objeto con , lo hace por usted:
    Statement stmt = con.createStatement ();
En este punto, la Declaración existe objeto, pero no tiene una sentencia SQL para pasar al DBMS. Aprendemos cómo hacerlo en una sección posterior.

Transacciones

JDBC permite sentencias SQL que se agrupan en una sola transacción. Por lo tanto, podemos garantizar la ACID (atomicidad, coherencia, aislamiento, durabilidad) inmueble con JDBC características transaccionales.

Control de transacciones se realiza mediante la conexión de objeto. Cuando se crea una conexión, por defecto se encuentra en el modo de confirmación automática. Esto significa que cada sentencia SQL individual es tratado como una transacción por sí mismo, y se compromete, tan pronto como su ejecución terminó. (Esto no es exactamente precisa, pero podemos pasar por alto esta sutileza para la mayoría de los fines).

Podemos desactivar el modo auto-commit para una conexión activa con:

      con.setAutoCommit (false);
y vuelva a encenderla con:
      con.setAutoCommit (true);
Una confirmación automática está apagado, se comprometen ninguna sentencia de SQL (es decir, la base de datos no se actualizará permanentemente) hasta que haya dicho explícitamente a ejecutar invocando el commit () método:

      con.commit ();
En cualquier momento antes del compromiso, podemos invocar rollback () para retrotraer la transacción, y restaurar los valores al último punto de confirmación (antes de los intentos de cambios).
He aquí un ejemplo que vincula estas ideas:

      con.setAutoCommit (false);
      Statement stmt = con.createStatement ();
      stmt.executeUpdate ("INSERT INTO Ventas VALUES (" Barra de Foo ',' BudLite ', 1,00) ");
      con.rollback ();
      stmt.executeUpdate ("INSERT INTO Ventas VALUES ('Bar de Joe', 'Miller', 2,00)");
      con.commit ();
      con.setAutoCommit (true);
Vamos a caminar a través del ejemplo para entender los efectos de varios métodos. En primer lugar, establecemos el compromiso automático desactivado, lo que indica que los siguientes enunciados deben ser considerados como una unidad. Tratamos de insertar en el Sells mesa ("Barra de Foo ',' BudLite ', 1,00) tupla. Sin embargo, este cambio no se ha hecho final (comprometido) todavía. Cuando invocamos rollback , cancelamos nuestra inserción y en efecto se dispone de toda la intención de insertar la tupla anterior. Tenga en cuenta que vende ahora sigue siendo como antes se intentó la inserción. Entonces intentamos otra inserción, y esta vez, nos comprometemos a la transacción. Es sólo ahora que Sells se ve afectado de forma permanente y tiene la nueva tupla en ella. Por último, se restablecerá la conexión a la confirmación automática de nuevo.

También podemos establecer los niveles de aislamiento de transacción si lo deseas. Por ejemplo, se puede establecer el nivel de aislamiento en TRANSACTION_READ_COMMITTED , que no permitirá que un valor que se accede hasta después de que se ha cometido, y prohibir lecturas sucias. Hay cinco de estos valores para los niveles de aislamiento previstas en la conexión de interfaz. De forma predeterminada, el nivel de aislamiento es serializable. JDBC nos permite averiguar el nivel de aislamiento de transacción de la base de datos se establece (utilizando la conexión método getTransactionIsolation ) y establecer el nivel adecuado (utilizando la conexión método setTransactionIsolation método).

Por lo general, reversión se utiliza en combinación con la capacidad de manejo de excepciones de Java para recuperarse de (des) errores previsibles. Tal combinación proporciona un mecanismo excelente y fácil para el manejo de integridad de los datos. Se estudia el manejo de errores usando JDBC en la siguiente sección.

REQUERIMIENTOS

 Para tener acceso a los datos desde una base de datos de SQL Server mediante el controlador JDBC de Microsoft SQL Server, debe tener los siguientes componentes instalados en el equipo:
  • Controlador de JDBC de Microsoft SQL Server
  • Java Runtime Environment

Requisitos de Java Runtime Environment

Desde la versión 2.0 del controlador JDBC de Microsoft SQL Server, el controlador JDBC proporciona compatibilidad con la API de Java Database Connectivity (JDBC) Spec que se ha ampliado para incluir la API de JDBC 4.0. El controlador JDBC 4.0 se incluyó como parte de Sun Java SE Development Kit (JDK) 6.0 y Java Runtime Environment (JRE) 6.0. JDBC 4.0 es un superconjunto de JDBC 3.0.

La versión 1.2 del controlador JDBC de Microsoft SQL Server es compatible con JDBC 3.0 y JDBC 4.0.
Cuando implementa la versión 2.0 del controlador JDBC de Microsoft SQL Server en los sistemas operativos Windows y UNIX, debe usar respectivamente los paquetes de instalación sqljdbc_<versión>_enu.exe y sqljdbc_<versión>_enu.tar.gz. Para obtener más información acerca de cómo implementar el controlador JDBC, vea el tema Implementar el controlador JDBC.
Para la compatibilidad con versiones anteriores y los posibles escenarios de actualización, la versión 2.0 del controlador JDBC incluye las dos bibliotecas de clases JAR de cada paquete de instalación: sqljdbc.jar y sqljdbc4.jar.


REFERENCIA BIBLIOGRAFICA

http://www.oracle.com/technetwork/java/javase/jdbc/index.html

http://es.wikipedia.org/wiki/Java_Database_Connectivity

  1.  M. Domínguez-Dorado,. Todo Programación. Nº 6. Págs. 35-38. Editorial Iberprensa (Madrid). DL M-13679-2004. Diciembre, 2004.. Acceso a bases de datos desde aplicaciones Java: JDBC 1.0.
  2.  M. Domínguez-Dorado,. Todo Programación. Nº 7. Págs. 37-40. Editorial Iberprensa (Madrid). DL M-13679-2004. Enero, 2005.. Acceso a bases de datos desde aplicaciones Java: JDBC 2.0..

No hay comentarios:

Publicar un comentario