Sei sulla pagina 1di 36

ODBC

Conexin a SQL Server con C#.NET a travs de ODBC

Orlando Alemn Ortiz Rayco J. Araa Rodrguez

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

Introduccin

Qu es ODBC?
ODBC => Open DataBase Connectivity Es una API estndar para el acceso a datos tanto relacional como no relacional. Independiente de Origen de Datos, del Lenguaje y del Sistema Operativo. Creado inicialmente por Microsoft y adoptado por casi toda la industria (Oracle, Borland, Novell, etc.)

Introduccin

Por qu ODBC?

Necesidad de una capa de Abstraccin


No se modifica el Programa si cambia el SGBD. No hay que hacer programas diferentes para acceder a diferentes SGBD.

Un solo programa puede acceder a diferentes SGBD con el mismo cdigo.

Necesidad de un acceso optimo a cualquier SGBD, tanto como si se tratara directamente con l. Simplicidad en el uso.

Introduccin

Escenario antes de ODBC


Aplicacin1

Aplicacin2

Aplicacin3

API1

API2

API3

API1

API2

API3

API1

API2

API3

SGBD1

SGBD2

SGBD3

Introduccin

Escenario con ODBC


Aplicacin1
Aplicacin2 Aplicacin3

ACCESO ODBC

ACCESO ODBC

ACCESO ODBC

ODBC

SGBD1

SGBD2

SGBD3

*NOTA: Esquema simplificado, en ms detalle ms adelante.

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

Arquitectura

Basado en el modelo Cliente/Servidor Componentes


Aplicaciones

Aplicaciones Clientes Carga y llama a los drivers Traductor entre ordenes ODBC y especificas del origen de datos. Hace falta decir algo de esto???

El Administrador de Drivers

Los Drivers

Los Orgenes de Datos

Arquitectura
Cliente
Aplicacin Aplicacin

Cliente

ODBC Driver Manager


ODBC Driver

ODBC Driver Manager


ODBC Driver Network/Communications Software

Protocolo de Datos

SGBD

Servidor

Orgenes de Datos

Arquitectura
Aplicacin

ODBC Driver Manager

Archivo Access

ODBC Driver

SQL Server

SQL Server Driver

Oracle
Oracle Driver Access Driver

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

El Administrador de Orgenes de Datos

Accesible desde el Panel de Control en Windows Permite:


Ver Drivers instalados Aadir Orgenes de Datos

Mapendolos con un DSN (DataSource Name)


DSN de Usuario: Solo visibles al usuario actual DSN de Sistema: Visible a todos los usuarios del sistema DSN de Archivo: Guarda la configuracin en un archivo

Trazas

til para depuracin Permite reutilizar conexiones

Agrupacin de conexiones

El Administrador de Orgenes de Datos

demo

Ver Administrador de Orgenes de Datos Agregar un origen de datos como DSN del sistema

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

Conexin a Origen de Datos

Clase OdbcConnection

ConnectionString

Se puede pasar en el constructor o a la propiedad con el mismo nombre. Conexin a SQL Server con Usuario y Contrasea:
Driver={SQL Server};Server=(local)\NetSDK; Database=Northwind;UID=MyUserName;PWD=MyPassword;

Conexin a SQL Server usando DSN:


DSN=MyDataSource;

Conexin a SQL Server usando DSN de Archivo:


FileDSN=MyFileDataSource;

Conexin a Origen de Datos

Clase OdbcConnection

Mtodos Open() y Close(), abren y cierran la conexin respectivamente.

Conexin a Origen de Datos

demo

Crear una aplicacin que se conecte a SQL Server Mostrar informacin que ofrece la clase OdbcConnection

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

Ejecucin de Consultas

Clase OdbcCommand

Representa sentencias SQL y Llamadas a Procedimiento Remoto a ejecutar en un Origen de Datos. Mtodo ExecuteNonQuery()

Ejecuta sentencias que no devuelven filas (INSERT,). Devuelve el nmero de filas afectadas.

Mtodo ExecuteScalar()

Devuelve la primera columna de la primera fila.


Devuelve un objeto OdbcDataReader.

Mtodo ExecuteReader()

Ejecucin de Consultas

Ejemplo consulta parametrizada

SELECT * FROM mitabla WHERE campo1 = ? Clase OdbcParameter

Se aade a la coleccin de parmetros del OdbcCommand

Ej. OdbcParameter param = new OdbcParameter(@campo1, OdbcType.NChar, 5); param.Value = ABCDE;

Ejemplo llamada procedimiento remoto

{CALL MiProcRem(?)}
Ej. OdbcParameter param = New OdbcParameter(@campo1,OdbcType.NChar,5); param.Value = ABCDE;

Ejecucin de Consultas

demo

Modificar la aplicacin anterior para lanzar una consulta SQL

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

Recuperacin de Datos

Clase OdbcDataReader
Permite leer un resultado de una consulta Solo en direccin hacia delante y uno a uno

Mtodo Read() lee la siguiente fila Item -> Indexador para acceder a los elementos de la fila por nombre y/o por posicin

Lo devuelve en un tipo genrico

Diferentes mtodos para obtener las columnas por posicin y en su tipo

Recuperacin de Datos

Clase OdbcDataAdapter
Permite obtener todos los resultados de una consulta. Se almacena en un objeto DataSet

DataSet es un objeto que almacena DataTables Es capaz de representar relaciones, restricciones, etc. Muy til para trabajo Off-Line Puede volcarse toda la informacin a XML y viceversa

Recuperacin de Datos

Clase OdbcDataAdapter

Permite actualizar la base de datos con los cambios que se han producido en el DataSet
De forma manual modificando las propiedades SelectCommand, InsertCommand, UpdateCommand y DeleteCommand De forma automtica con OdbcCommandBuilder, aunque solo para tablas simples

Recuperacin de Datos

demo

Modificar el programa anterior para recuperar datos de diferentes formas Llamar a un procedimiento remoto y recuperar los datos que devuelve

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

Transacciones

Clase OdbcTransaction

El objeto se obtiene de OdbcConnection

Mtodo BeginTransaction()

Se le puede pasar el nivel de aislamiento, sino utiliza el por defecto del driver.

Se le pasa una referencia al objeto OdbcCommand que haga las acciones de la transaccin. Mtodos Commit() y Rollback() para aceptar o deshacer la transaccin respectivamente.

Transacciones

demo

Modificar el programa anterior para lanzar una transaccin Hacer que la transaccin falle y se llame a RollBack()

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

Conclusin

ODBC es una capa intermedia entre las aplicaciones y los SGBD que simplifica el acceso a datos a las aplicaciones. Ya en desuso.

Claro ejemplo, MS no lo incluye en la plataforma .NET, sino que lo deja como una librera externa, apostando ms por OLEDB.

El modelo de acceso a datos de la plataforma .NET (ADO.NET) basado en Providers simplifica el acceso a datos y lo hace muy intiutivo. En .NET existe un Provider para SQL Server.

ndice

Introduccin Arquitectura El Administrador de Orgenes de Datos Conexin a Origen de Datos Ejecucin de Consultas Recuperacin de Datos Transacciones Conclusin Referencias

Referencias

Microsoft Library

http://msdn.microsoft.com/library

Inside ODBC

Ed. Microsoft Press Autor: Kyle Geiger

ODBC .NET Data Provider

http://www.microsoft.com/downloads/details.aspx?displaylang=es&Fami lyID=6ccd8427-1017-4f33-a062-d165078e32b1

Apndice

Enumeracin OdbcType contiene los siguientes tipos:

BigInt, Binary, Bit, Char, Date, DateTime, Decimal, Double, Image, Int, NChar, NText, Numeric, NVarChar, Real, SmallDateTime, SmallInt, Text, Time, Timestamp, TinyInt, UniqueIdentifier, VarBinary, VarChar.

Preguntas?

Potrebbero piacerti anche