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
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
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
- 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
REFERENCIA BIBLIOGRAFICA
http://www.oracle.com/technetwork/java/javase/jdbc/index.html
http://es.wikipedia.org/wiki/Java_Database_Connectivity
- ↑ 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.
- ↑ 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