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
El Administrador de Drivers
Carga y llama a los drivers
Los Drivers
Traductor entre ordenes ODBC y especificas del origen de
datos.
Los Orgenes de Datos
Hace falta decir algo de esto???
Arquitectura

Cliente Cliente
Aplicacin Aplicacin

ODBC Driver ODBC Driver


Manager Manager

ODBC Driver 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 Oracle


Server Oracle Access
Driver Driver 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
Agrupacin de conexiones
Permite reutilizar 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.
Mtodo ExecuteReader()
Devuelve un objeto OdbcDataReader.
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?