ODBCODBC
Conexión a SQL Server con C#.NET aConexión a SQL Server con C#.NET a
través de ODBCtravés de ODBC
Orlando Alemán OrtizOrlando Alemán Ortiz
Rayco J. Araña RodríguezRayco J. Araña Rodríguez
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
IntroducciónIntroducción
 ¿Qué es ODBC?¿Qué es ODBC?
 ODBC => Open DataBase ConnectivityODBC => Open DataBase Connectivity
 Es una API estándar para el acceso a datosEs una API estándar para el acceso a datos
tanto relacional como no relacional.tanto relacional como no relacional.
 Independiente de Origen de Datos, delIndependiente de Origen de Datos, del
Lenguaje y del Sistema Operativo.Lenguaje y del Sistema Operativo.
 Creado inicialmente por Microsoft y adoptadoCreado inicialmente por Microsoft y adoptado
por casi toda la industria (Oracle, Borland,por casi toda la industria (Oracle, Borland,
Novell, etc.)Novell, etc.)
IntroducciónIntroducción
 ¿Por qué ODBC?¿Por qué ODBC?
 Necesidad de una capa de AbstracciónNecesidad de una capa de Abstracción
 No se modifica el Programa si cambia el SGBD.No se modifica el Programa si cambia el SGBD.
 No hay que hacer programas diferentes paraNo hay que hacer programas diferentes para
acceder a diferentes SGBD.acceder a diferentes SGBD.
 Un solo programa puede acceder a diferentes SGBDUn solo programa puede acceder a diferentes SGBD
con el mismo código.con el mismo código.
 Necesidad de un acceso optimo a cualquierNecesidad de un acceso optimo a cualquier
SGBD, tanto como si se tratara directamenteSGBD, tanto como si se tratara directamente
con él.con él.
 Simplicidad en el uso.Simplicidad en el uso.
IntroducciónIntroducción
 Escenario antes de ODBCEscenario antes de ODBC
Aplicación1Aplicación1
SGBD1SGBD1
Aplicación2Aplicación2 Aplicación3Aplicación3
API1 API2 API3 API2 API3 API2 API3API1API1
SGBD2SGBD2 SGBD3SGBD3
IntroducciónIntroducción
 Escenario con ODBCEscenario con ODBC
**NOTA: Esquema simplificado, en más detalle más adelante.NOTA: Esquema simplificado, en más detalle más adelante.
Aplicación1Aplicación1 Aplicación2Aplicación2 Aplicación3Aplicación3
ACCESO ODBC ACCESO ODBC ACCESO ODBC
SGBD1SGBD1
ODBCODBC
SGBD2SGBD2 SGBD3SGBD3
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
ArquitecturaArquitectura
 Basado en el modelo Cliente/ServidorBasado en el modelo Cliente/Servidor
 ComponentesComponentes
 AplicacionesAplicaciones
 Aplicaciones ClientesAplicaciones Clientes
 El Administrador de DriversEl Administrador de Drivers
 Carga y llama a los driversCarga y llama a los drivers
 Los DriversLos Drivers
 Traductor entre ordenes ODBC y especificas del origen deTraductor entre ordenes ODBC y especificas del origen de
datos.datos.
 Los Orígenes de DatosLos Orígenes de Datos
 ¿¿¿Hace falta decir algo de esto???¿¿¿Hace falta decir algo de esto??? 
ArquitecturaArquitectura
Network/CommunicationsNetwork/Communications
SoftwareSoftware
Protocolo de DatosProtocolo de Datos
Orígenes de DatosOrígenes de Datos
AplicaciónAplicación
ODBC DriverODBC Driver
ManagerManager
ODBC DriverODBC Driver
ClienteCliente
AplicaciónAplicación
ODBC DriverODBC Driver
ManagerManager
ODBC DriverODBC Driver
ClienteCliente
SGBDSGBD
ServidorServidor
ArquitecturaArquitectura
…
ODBC Driver ManagerODBC Driver Manager
AplicaciónAplicación
ODBC DriverODBC Driver
SQL ServerSQL Server OracleOracleSQLSQL
ServerServer
DriverDriver
OracleOracle
DriverDriver
AccessAccess
DriverDriver
Archivo AccessArchivo Access
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
El Administrador de Orígenes deEl Administrador de Orígenes de
DatosDatos
 Accesible desde el Panel de Control en WindowsAccesible desde el Panel de Control en Windows
 Permite:Permite:
 Ver Drivers instaladosVer Drivers instalados
 Añadir Orígenes de DatosAñadir Orígenes de Datos
 Mapeándolos con un DSN (DataSource Name)Mapeándolos con un DSN (DataSource Name)
 DSN de Usuario: Solo visibles al usuario actualDSN de Usuario: Solo visibles al usuario actual
 DSN de Sistema: Visible a todos los usuarios del sistemaDSN de Sistema: Visible a todos los usuarios del sistema
 DSN de Archivo: Guarda la configuración en un archivoDSN de Archivo: Guarda la configuración en un archivo
 TrazasTrazas
 Útil para depuraciónÚtil para depuración
 Agrupación de conexionesAgrupación de conexiones
 Permite reutilizar conexionesPermite reutilizar conexiones
El Administrador de Orígenes deEl Administrador de Orígenes de
DatosDatos
demodemo
 Ver Administrador de Orígenes de DatosVer Administrador de Orígenes de Datos
 Agregar un origen de datos como DSN del sistemaAgregar un origen de datos como DSN del sistema
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
Conexión a Origen de DatosConexión a Origen de Datos
 ClaseClase “OdbcConnection”“OdbcConnection”
 ConnectionStringConnectionString
 Se puede pasar en el constructor o a la propiedad con elSe puede pasar en el constructor o a la propiedad con el
mismo nombre.mismo nombre.
 Conexión a SQL Server con Usuario y Contraseña:Conexión a SQL Server con Usuario y Contraseña:
““Driver={SQL Server};Server=(local)NetSDK;Driver={SQL Server};Server=(local)NetSDK;
Database=Northwind;UID=MyUserName;PWD=MyPassword;”Database=Northwind;UID=MyUserName;PWD=MyPassword;”
 Conexión a SQL Server usando DSN:Conexión a SQL Server usando DSN:
““DSN=MyDataSource;”DSN=MyDataSource;”
 Conexión a SQL Server usando DSN de Archivo:Conexión a SQL Server usando DSN de Archivo:
““FileDSN=MyFileDataSource;”FileDSN=MyFileDataSource;”
Conexión a Origen de DatosConexión a Origen de Datos
 ClaseClase “OdbcConnection”“OdbcConnection”
 MétodosMétodos Open()Open() yy Close()Close(), abren y cierran la, abren y cierran la
conexión respectivamente.conexión respectivamente.
Conexión a Origen de DatosConexión a Origen de Datos
demodemo
 Crear una aplicación que se conecte a SQL ServerCrear una aplicación que se conecte a SQL Server
 Mostrar información que ofrece la clase OdbcConnectionMostrar información que ofrece la clase OdbcConnection
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
Ejecución de ConsultasEjecución de Consultas
 ClaseClase “OdbcCommand”“OdbcCommand”
 Representa sentencias SQL y Llamadas aRepresenta sentencias SQL y Llamadas a
Procedimiento Remoto a ejecutar en un Origen deProcedimiento Remoto a ejecutar en un Origen de
Datos.Datos.
 MétodoMétodo ExecuteNonQuery()ExecuteNonQuery()
 Ejecuta sentencias que no devuelven filas (INSERT,…).Ejecuta sentencias que no devuelven filas (INSERT,…).
 Devuelve el número de filas afectadas.Devuelve el número de filas afectadas.
 MétodoMétodo ExecuteScalar()ExecuteScalar()
 Devuelve la primera columna de la primera fila.Devuelve la primera columna de la primera fila.
 MétodoMétodo ExecuteReader()ExecuteReader()
 Devuelve un objetoDevuelve un objeto OdbcDataReaderOdbcDataReader..
Ejecución de ConsultasEjecución de Consultas
 Ejemplo consulta parametrizadaEjemplo consulta parametrizada
 ““SELECT * FROM mitabla WHERE campo1 = ?”SELECT * FROM mitabla WHERE campo1 = ?”
 ClaseClase “OdbcParameter”“OdbcParameter”
 Se añade a la colección de parámetros del OdbcCommandSe añade a la colección de parámetros del OdbcCommand
Ej.Ej. OdbcParameter param =OdbcParameter param =
new OdbcParameter(“@campo1”, OdbcType.NChar, 5);new OdbcParameter(“@campo1”, OdbcType.NChar, 5);
param.Value = “ABCDE”;param.Value = “ABCDE”;
 Ejemplo llamada procedimiento remotoEjemplo llamada procedimiento remoto
 ““{CALL MiProcRem(?)}”{CALL MiProcRem(?)}”
Ej.Ej. OdbcParameter param =OdbcParameter param =
New OdbcParameter(“@campo1”,OdbcType.NChar,5);New OdbcParameter(“@campo1”,OdbcType.NChar,5);
param.Value = “ABCDE”;param.Value = “ABCDE”;
Ejecución de ConsultasEjecución de Consultas
demodemo
 Modificar la aplicación anterior para lanzar una consulta SQLModificar la aplicación anterior para lanzar una consulta SQL
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
Recuperación de DatosRecuperación de Datos
 ClaseClase “OdbcDataReader”“OdbcDataReader”
 Permite leer un resultado de una consultaPermite leer un resultado de una consulta
 Solo en dirección hacia delante y uno a unoSolo en dirección hacia delante y uno a uno
 MétodoMétodo Read()Read() lee la siguiente filalee la siguiente fila
 ItemItem -> Indexador para acceder a los elementos-> Indexador para acceder a los elementos
de la fila por nombre y/o por posiciónde la fila por nombre y/o por posición
 Lo devuelve en un tipo genéricoLo devuelve en un tipo genérico
 Diferentes métodos para obtener las columnas porDiferentes métodos para obtener las columnas por
posición y en su tipoposición y en su tipo
Recuperación de DatosRecuperación de Datos
 ClaseClase “OdbcDataAdapter”“OdbcDataAdapter”
 Permite obtener todos los resultados de unaPermite obtener todos los resultados de una
consulta.consulta.
 Se almacena en un objetoSe almacena en un objeto DataSetDataSet
 DataSetDataSet es un objeto que almacenaes un objeto que almacena DataTable’sDataTable’s
 Es capaz de representar relaciones, restricciones,Es capaz de representar relaciones, restricciones,
etc.etc.
 Muy útil para trabajo Off-LineMuy útil para trabajo Off-Line
 Puede volcarse toda la información a XML yPuede volcarse toda la información a XML y
viceversaviceversa
Recuperación de DatosRecuperación de Datos
 ClaseClase “OdbcDataAdapter”“OdbcDataAdapter”
 Permite actualizar la base de datos con losPermite actualizar la base de datos con los
cambios que se han producido en elcambios que se han producido en el DataSetDataSet
 De forma manual modificando las propiedadesDe forma manual modificando las propiedades
SelectCommandSelectCommand,, InsertCommandInsertCommand,,
UpdateCommandUpdateCommand yy DeleteCommandDeleteCommand
 De forma automática conDe forma automática con OdbcCommandBuilderOdbcCommandBuilder,,
aunque solo para tablas simplesaunque solo para tablas simples
Recuperación de DatosRecuperación de Datos
demodemo
 Modificar el programa anterior para recuperar datos de diferentesModificar el programa anterior para recuperar datos de diferentes
formasformas
 Llamar a un procedimiento remoto y recuperar los datos queLlamar a un procedimiento remoto y recuperar los datos que
devuelvedevuelve
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
TransaccionesTransacciones
 Clase “Clase “OdbcTransaction”OdbcTransaction”
 El objeto se obtiene deEl objeto se obtiene de OdbcConnectionOdbcConnection
 MétodoMétodo BeginTransaction()BeginTransaction()
 Se le puede pasar el nivel de aislamiento, sino utiliza elSe le puede pasar el nivel de aislamiento, sino utiliza el
por defecto del driver.por defecto del driver.
 Se le pasa una referencia al objetoSe le pasa una referencia al objeto
OdbcCommandOdbcCommand que haga las acciones de laque haga las acciones de la
transacción.transacción.
 MétodosMétodos Commit()Commit() yy Rollback()Rollback() para aceptar opara aceptar o
deshacer la transacción respectivamente.deshacer la transacción respectivamente.
TransaccionesTransacciones
demodemo
 Modificar el programa anterior para lanzar una transacciónModificar el programa anterior para lanzar una transacción
 Hacer que la transacción falle y se llame a RollBack()Hacer que la transacción falle y se llame a RollBack()
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
ConclusiónConclusión
 ODBC es una capa intermedia entre lasODBC es una capa intermedia entre las
aplicaciones y los SGBD que simplifica elaplicaciones y los SGBD que simplifica el
acceso a datos a las aplicaciones.acceso a datos a las aplicaciones.
 Ya en desuso.Ya en desuso.
 Claro ejemplo, MS no lo incluye en la plataformaClaro ejemplo, MS no lo incluye en la plataforma
.NET, sino que lo deja como una librería externa,.NET, sino que lo deja como una librería externa,
apostando más por OLEDB.apostando más por OLEDB.
 El modelo de acceso a datos de la plataformaEl modelo de acceso a datos de la plataforma
.NET (ADO.NET) basado en.NET (ADO.NET) basado en “Providers”“Providers”
simplifica el acceso a datos y lo hace muysimplifica el acceso a datos y lo hace muy
intiutivo.intiutivo.
 En .NET existe unEn .NET existe un “Provider”“Provider” para SQL Server.para SQL Server.
ÍndiceÍndice
 IntroducciónIntroducción
 ArquitecturaArquitectura
 El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos
 Conexión a Origen de DatosConexión a Origen de Datos
 Ejecución de ConsultasEjecución de Consultas
 Recuperación de DatosRecuperación de Datos
 TransaccionesTransacciones
 ConclusiónConclusión
 ReferenciasReferencias
ReferenciasReferencias
 Microsoft LibraryMicrosoft Library
 http://msdn.microsoft.com/libraryhttp://msdn.microsoft.com/library
 Inside ODBCInside ODBC
 Ed. Microsoft PressEd. Microsoft Press
 Autor: Kyle GeigerAutor: Kyle Geiger
 ODBC .NET Data ProviderODBC .NET Data Provider
 http://www.microsoft.com/downloads/details.aspx?http://www.microsoft.com/downloads/details.aspx?
displaylang=es&FamilyID=6ccd8427-1017-4f33-a062-d165078e32b1displaylang=es&FamilyID=6ccd8427-1017-4f33-a062-d165078e32b1
ApéndiceApéndice
 EnumeraciónEnumeración OdbcTypeOdbcType contiene loscontiene los
siguientes tipos:siguientes tipos:
 BigInt, Binary, Bit, Char, Date, DateTime, Decimal, Double,BigInt, Binary, Bit, Char, Date, DateTime, Decimal, Double,
Image, Int, NChar, NText, Numeric, NVarChar, Real,Image, Int, NChar, NText, Numeric, NVarChar, Real,
SmallDateTime, SmallInt, Text, Time, Timestamp, TinyInt,SmallDateTime, SmallInt, Text, Time, Timestamp, TinyInt,
UniqueIdentifier, VarBinary, VarChar.UniqueIdentifier, VarBinary, VarChar.
¿Preguntas?¿Preguntas?

Odbc

  • 1.
    ODBCODBC Conexión a SQLServer con C#.NET aConexión a SQL Server con C#.NET a través de ODBCtravés de ODBC Orlando Alemán OrtizOrlando Alemán Ortiz Rayco J. Araña RodríguezRayco J. Araña Rodríguez
  • 2.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 3.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 4.
    IntroducciónIntroducción  ¿Qué esODBC?¿Qué es ODBC?  ODBC => Open DataBase ConnectivityODBC => Open DataBase Connectivity  Es una API estándar para el acceso a datosEs una API estándar para el acceso a datos tanto relacional como no relacional.tanto relacional como no relacional.  Independiente de Origen de Datos, delIndependiente de Origen de Datos, del Lenguaje y del Sistema Operativo.Lenguaje y del Sistema Operativo.  Creado inicialmente por Microsoft y adoptadoCreado inicialmente por Microsoft y adoptado por casi toda la industria (Oracle, Borland,por casi toda la industria (Oracle, Borland, Novell, etc.)Novell, etc.)
  • 5.
    IntroducciónIntroducción  ¿Por quéODBC?¿Por qué ODBC?  Necesidad de una capa de AbstracciónNecesidad de una capa de Abstracción  No se modifica el Programa si cambia el SGBD.No se modifica el Programa si cambia el SGBD.  No hay que hacer programas diferentes paraNo hay que hacer programas diferentes para acceder a diferentes SGBD.acceder a diferentes SGBD.  Un solo programa puede acceder a diferentes SGBDUn solo programa puede acceder a diferentes SGBD con el mismo código.con el mismo código.  Necesidad de un acceso optimo a cualquierNecesidad de un acceso optimo a cualquier SGBD, tanto como si se tratara directamenteSGBD, tanto como si se tratara directamente con él.con él.  Simplicidad en el uso.Simplicidad en el uso.
  • 6.
    IntroducciónIntroducción  Escenario antesde ODBCEscenario antes de ODBC Aplicación1Aplicación1 SGBD1SGBD1 Aplicación2Aplicación2 Aplicación3Aplicación3 API1 API2 API3 API2 API3 API2 API3API1API1 SGBD2SGBD2 SGBD3SGBD3
  • 7.
    IntroducciónIntroducción  Escenario conODBCEscenario con ODBC **NOTA: Esquema simplificado, en más detalle más adelante.NOTA: Esquema simplificado, en más detalle más adelante. Aplicación1Aplicación1 Aplicación2Aplicación2 Aplicación3Aplicación3 ACCESO ODBC ACCESO ODBC ACCESO ODBC SGBD1SGBD1 ODBCODBC SGBD2SGBD2 SGBD3SGBD3
  • 8.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 9.
    ArquitecturaArquitectura  Basado enel modelo Cliente/ServidorBasado en el modelo Cliente/Servidor  ComponentesComponentes  AplicacionesAplicaciones  Aplicaciones ClientesAplicaciones Clientes  El Administrador de DriversEl Administrador de Drivers  Carga y llama a los driversCarga y llama a los drivers  Los DriversLos Drivers  Traductor entre ordenes ODBC y especificas del origen deTraductor entre ordenes ODBC y especificas del origen de datos.datos.  Los Orígenes de DatosLos Orígenes de Datos  ¿¿¿Hace falta decir algo de esto???¿¿¿Hace falta decir algo de esto??? 
  • 10.
    ArquitecturaArquitectura Network/CommunicationsNetwork/Communications SoftwareSoftware Protocolo de DatosProtocolode Datos Orígenes de DatosOrígenes de Datos AplicaciónAplicación ODBC DriverODBC Driver ManagerManager ODBC DriverODBC Driver ClienteCliente AplicaciónAplicación ODBC DriverODBC Driver ManagerManager ODBC DriverODBC Driver ClienteCliente SGBDSGBD ServidorServidor
  • 11.
    ArquitecturaArquitectura … ODBC Driver ManagerODBCDriver Manager AplicaciónAplicación ODBC DriverODBC Driver SQL ServerSQL Server OracleOracleSQLSQL ServerServer DriverDriver OracleOracle DriverDriver AccessAccess DriverDriver Archivo AccessArchivo Access
  • 12.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 13.
    El Administrador deOrígenes deEl Administrador de Orígenes de DatosDatos  Accesible desde el Panel de Control en WindowsAccesible desde el Panel de Control en Windows  Permite:Permite:  Ver Drivers instaladosVer Drivers instalados  Añadir Orígenes de DatosAñadir Orígenes de Datos  Mapeándolos con un DSN (DataSource Name)Mapeándolos con un DSN (DataSource Name)  DSN de Usuario: Solo visibles al usuario actualDSN de Usuario: Solo visibles al usuario actual  DSN de Sistema: Visible a todos los usuarios del sistemaDSN de Sistema: Visible a todos los usuarios del sistema  DSN de Archivo: Guarda la configuración en un archivoDSN de Archivo: Guarda la configuración en un archivo  TrazasTrazas  Útil para depuraciónÚtil para depuración  Agrupación de conexionesAgrupación de conexiones  Permite reutilizar conexionesPermite reutilizar conexiones
  • 14.
    El Administrador deOrígenes deEl Administrador de Orígenes de DatosDatos demodemo  Ver Administrador de Orígenes de DatosVer Administrador de Orígenes de Datos  Agregar un origen de datos como DSN del sistemaAgregar un origen de datos como DSN del sistema
  • 15.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 16.
    Conexión a Origende DatosConexión a Origen de Datos  ClaseClase “OdbcConnection”“OdbcConnection”  ConnectionStringConnectionString  Se puede pasar en el constructor o a la propiedad con elSe puede pasar en el constructor o a la propiedad con el mismo nombre.mismo nombre.  Conexión a SQL Server con Usuario y Contraseña:Conexión a SQL Server con Usuario y Contraseña: ““Driver={SQL Server};Server=(local)NetSDK;Driver={SQL Server};Server=(local)NetSDK; Database=Northwind;UID=MyUserName;PWD=MyPassword;”Database=Northwind;UID=MyUserName;PWD=MyPassword;”  Conexión a SQL Server usando DSN:Conexión a SQL Server usando DSN: ““DSN=MyDataSource;”DSN=MyDataSource;”  Conexión a SQL Server usando DSN de Archivo:Conexión a SQL Server usando DSN de Archivo: ““FileDSN=MyFileDataSource;”FileDSN=MyFileDataSource;”
  • 17.
    Conexión a Origende DatosConexión a Origen de Datos  ClaseClase “OdbcConnection”“OdbcConnection”  MétodosMétodos Open()Open() yy Close()Close(), abren y cierran la, abren y cierran la conexión respectivamente.conexión respectivamente.
  • 18.
    Conexión a Origende DatosConexión a Origen de Datos demodemo  Crear una aplicación que se conecte a SQL ServerCrear una aplicación que se conecte a SQL Server  Mostrar información que ofrece la clase OdbcConnectionMostrar información que ofrece la clase OdbcConnection
  • 19.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 20.
    Ejecución de ConsultasEjecuciónde Consultas  ClaseClase “OdbcCommand”“OdbcCommand”  Representa sentencias SQL y Llamadas aRepresenta sentencias SQL y Llamadas a Procedimiento Remoto a ejecutar en un Origen deProcedimiento Remoto a ejecutar en un Origen de Datos.Datos.  MétodoMétodo ExecuteNonQuery()ExecuteNonQuery()  Ejecuta sentencias que no devuelven filas (INSERT,…).Ejecuta sentencias que no devuelven filas (INSERT,…).  Devuelve el número de filas afectadas.Devuelve el número de filas afectadas.  MétodoMétodo ExecuteScalar()ExecuteScalar()  Devuelve la primera columna de la primera fila.Devuelve la primera columna de la primera fila.  MétodoMétodo ExecuteReader()ExecuteReader()  Devuelve un objetoDevuelve un objeto OdbcDataReaderOdbcDataReader..
  • 21.
    Ejecución de ConsultasEjecuciónde Consultas  Ejemplo consulta parametrizadaEjemplo consulta parametrizada  ““SELECT * FROM mitabla WHERE campo1 = ?”SELECT * FROM mitabla WHERE campo1 = ?”  ClaseClase “OdbcParameter”“OdbcParameter”  Se añade a la colección de parámetros del OdbcCommandSe añade a la colección de parámetros del OdbcCommand Ej.Ej. OdbcParameter param =OdbcParameter param = new OdbcParameter(“@campo1”, OdbcType.NChar, 5);new OdbcParameter(“@campo1”, OdbcType.NChar, 5); param.Value = “ABCDE”;param.Value = “ABCDE”;  Ejemplo llamada procedimiento remotoEjemplo llamada procedimiento remoto  ““{CALL MiProcRem(?)}”{CALL MiProcRem(?)}” Ej.Ej. OdbcParameter param =OdbcParameter param = New OdbcParameter(“@campo1”,OdbcType.NChar,5);New OdbcParameter(“@campo1”,OdbcType.NChar,5); param.Value = “ABCDE”;param.Value = “ABCDE”;
  • 22.
    Ejecución de ConsultasEjecuciónde Consultas demodemo  Modificar la aplicación anterior para lanzar una consulta SQLModificar la aplicación anterior para lanzar una consulta SQL
  • 23.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 24.
    Recuperación de DatosRecuperaciónde Datos  ClaseClase “OdbcDataReader”“OdbcDataReader”  Permite leer un resultado de una consultaPermite leer un resultado de una consulta  Solo en dirección hacia delante y uno a unoSolo en dirección hacia delante y uno a uno  MétodoMétodo Read()Read() lee la siguiente filalee la siguiente fila  ItemItem -> Indexador para acceder a los elementos-> Indexador para acceder a los elementos de la fila por nombre y/o por posiciónde la fila por nombre y/o por posición  Lo devuelve en un tipo genéricoLo devuelve en un tipo genérico  Diferentes métodos para obtener las columnas porDiferentes métodos para obtener las columnas por posición y en su tipoposición y en su tipo
  • 25.
    Recuperación de DatosRecuperaciónde Datos  ClaseClase “OdbcDataAdapter”“OdbcDataAdapter”  Permite obtener todos los resultados de unaPermite obtener todos los resultados de una consulta.consulta.  Se almacena en un objetoSe almacena en un objeto DataSetDataSet  DataSetDataSet es un objeto que almacenaes un objeto que almacena DataTable’sDataTable’s  Es capaz de representar relaciones, restricciones,Es capaz de representar relaciones, restricciones, etc.etc.  Muy útil para trabajo Off-LineMuy útil para trabajo Off-Line  Puede volcarse toda la información a XML yPuede volcarse toda la información a XML y viceversaviceversa
  • 26.
    Recuperación de DatosRecuperaciónde Datos  ClaseClase “OdbcDataAdapter”“OdbcDataAdapter”  Permite actualizar la base de datos con losPermite actualizar la base de datos con los cambios que se han producido en elcambios que se han producido en el DataSetDataSet  De forma manual modificando las propiedadesDe forma manual modificando las propiedades SelectCommandSelectCommand,, InsertCommandInsertCommand,, UpdateCommandUpdateCommand yy DeleteCommandDeleteCommand  De forma automática conDe forma automática con OdbcCommandBuilderOdbcCommandBuilder,, aunque solo para tablas simplesaunque solo para tablas simples
  • 27.
    Recuperación de DatosRecuperaciónde Datos demodemo  Modificar el programa anterior para recuperar datos de diferentesModificar el programa anterior para recuperar datos de diferentes formasformas  Llamar a un procedimiento remoto y recuperar los datos queLlamar a un procedimiento remoto y recuperar los datos que devuelvedevuelve
  • 28.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 29.
    TransaccionesTransacciones  Clase “Clase“OdbcTransaction”OdbcTransaction”  El objeto se obtiene deEl objeto se obtiene de OdbcConnectionOdbcConnection  MétodoMétodo BeginTransaction()BeginTransaction()  Se le puede pasar el nivel de aislamiento, sino utiliza elSe le puede pasar el nivel de aislamiento, sino utiliza el por defecto del driver.por defecto del driver.  Se le pasa una referencia al objetoSe le pasa una referencia al objeto OdbcCommandOdbcCommand que haga las acciones de laque haga las acciones de la transacción.transacción.  MétodosMétodos Commit()Commit() yy Rollback()Rollback() para aceptar opara aceptar o deshacer la transacción respectivamente.deshacer la transacción respectivamente.
  • 30.
    TransaccionesTransacciones demodemo  Modificar elprograma anterior para lanzar una transacciónModificar el programa anterior para lanzar una transacción  Hacer que la transacción falle y se llame a RollBack()Hacer que la transacción falle y se llame a RollBack()
  • 31.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 32.
    ConclusiónConclusión  ODBC esuna capa intermedia entre lasODBC es una capa intermedia entre las aplicaciones y los SGBD que simplifica elaplicaciones y los SGBD que simplifica el acceso a datos a las aplicaciones.acceso a datos a las aplicaciones.  Ya en desuso.Ya en desuso.  Claro ejemplo, MS no lo incluye en la plataformaClaro ejemplo, MS no lo incluye en la plataforma .NET, sino que lo deja como una librería externa,.NET, sino que lo deja como una librería externa, apostando más por OLEDB.apostando más por OLEDB.  El modelo de acceso a datos de la plataformaEl modelo de acceso a datos de la plataforma .NET (ADO.NET) basado en.NET (ADO.NET) basado en “Providers”“Providers” simplifica el acceso a datos y lo hace muysimplifica el acceso a datos y lo hace muy intiutivo.intiutivo.  En .NET existe unEn .NET existe un “Provider”“Provider” para SQL Server.para SQL Server.
  • 33.
    ÍndiceÍndice  IntroducciónIntroducción  ArquitecturaArquitectura El Administrador de Orígenes de DatosEl Administrador de Orígenes de Datos  Conexión a Origen de DatosConexión a Origen de Datos  Ejecución de ConsultasEjecución de Consultas  Recuperación de DatosRecuperación de Datos  TransaccionesTransacciones  ConclusiónConclusión  ReferenciasReferencias
  • 34.
    ReferenciasReferencias  Microsoft LibraryMicrosoftLibrary  http://msdn.microsoft.com/libraryhttp://msdn.microsoft.com/library  Inside ODBCInside ODBC  Ed. Microsoft PressEd. Microsoft Press  Autor: Kyle GeigerAutor: Kyle Geiger  ODBC .NET Data ProviderODBC .NET Data Provider  http://www.microsoft.com/downloads/details.aspx?http://www.microsoft.com/downloads/details.aspx? displaylang=es&FamilyID=6ccd8427-1017-4f33-a062-d165078e32b1displaylang=es&FamilyID=6ccd8427-1017-4f33-a062-d165078e32b1
  • 35.
    ApéndiceApéndice  EnumeraciónEnumeración OdbcTypeOdbcTypecontiene loscontiene los siguientes tipos:siguientes tipos:  BigInt, Binary, Bit, Char, Date, DateTime, Decimal, Double,BigInt, Binary, Bit, Char, Date, DateTime, Decimal, Double, Image, Int, NChar, NText, Numeric, NVarChar, Real,Image, Int, NChar, NText, Numeric, NVarChar, Real, SmallDateTime, SmallInt, Text, Time, Timestamp, TinyInt,SmallDateTime, SmallInt, Text, Time, Timestamp, TinyInt, UniqueIdentifier, VarBinary, VarChar.UniqueIdentifier, VarBinary, VarChar.
  • 36.