Odbc
-
Upload
carlos-armando -
Category
Documents
-
view
279 -
download
7
Transcript of Odbc
ODBCODBCConexión a SQL Server con C#.NET a Conexión a SQL Server con C#.NET a
través de ODBCtravés de ODBC
Orlando Alemán OrtizOrlando Alemán OrtizRayco 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 datos Es una API estándar para el acceso a datos
tanto relacional como no relacional.tanto relacional como no relacional. Independiente de Origen de Datos, del Independiente de Origen de Datos, del
Lenguaje y del Sistema Operativo.Lenguaje y del Sistema Operativo. Creado inicialmente por Microsoft y adoptado Creado 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 para No hay que hacer programas diferentes para
acceder a diferentes SGBD.acceder a diferentes SGBD. Un solo programa puede acceder a diferentes SGBD Un solo programa puede acceder a diferentes SGBD
con el mismo código.con el mismo código.
Necesidad de un acceso optimo a cualquier Necesidad de un acceso optimo a cualquier SGBD, tanto como si se tratara directamente SGBD, 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 ODBCAplicació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 de Traductor 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/Communications Network/Communications SoftwareSoftware
Protocolo de DatosProtocolo de Datos
Orígenes de DatosOrígenes de Datos
AplicaciónAplicación
ODBC Driver ODBC Driver ManagerManager
ODBC DriverODBC Driver
ClienteClienteAplicaciónAplicación
ODBC Driver ODBC Driver ManagerManager
ODBC DriverODBC Driver
ClienteCliente
SGBDSGBD
ServidorServidor
ArquitecturaArquitectura
…
ODBC Driver ManagerODBC Driver Manager
AplicaciónAplicación
ODBC DriverODBC Driver
SQL ServerSQL Server OracleOracleSQL SQL Server Server DriverDriver
Oracle Oracle DriverDriver
Access Access 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 de El 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 de El 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
Clase Clase “OdbcConnection”“OdbcConnection” ConnectionStringConnectionString
Se puede pasar en el constructor o a la propiedad con el Se 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
Clase Clase “OdbcConnection”“OdbcConnection” Métodos Métodos Open() Open() y y 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
Clase Clase “OdbcCommand”“OdbcCommand” Representa sentencias SQL y Llamadas a Representa sentencias SQL y Llamadas a
Procedimiento Remoto a ejecutar en un Origen de Procedimiento Remoto a ejecutar en un Origen de Datos.Datos.
Método Mé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étodo Método ExecuteScalar()ExecuteScalar() Devuelve la primera columna de la primera fila.Devuelve la primera columna de la primera fila.
Método Método ExecuteReader()ExecuteReader() Devuelve un objeto Devuelve 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 = ?” Clase Clase “OdbcParameter”“OdbcParameter”
Se añade a la colección de parámetros del OdbcCommandSe añade a la colección de parámetros del OdbcCommandEj.Ej. OdbcParameter param = OdbcParameter param =
new OdbcParameter(“@campo1”, new OdbcParameter(“@campo1”, OdbcType.NChar, 5);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
Clase Clase “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étodo Método Read()Read() lee la siguiente fila lee 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 por Diferentes 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
Clase Clase “OdbcDataAdapter”“OdbcDataAdapter” Permite obtener todos los resultados de una Permite obtener todos los resultados de una
consulta.consulta. Se almacena en un objeto Se almacena en un objeto DataSetDataSet
DataSetDataSet es un objeto que almacena es 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 y Puede volcarse toda la información a XML y
viceversaviceversa
Recuperación de DatosRecuperación de Datos
Clase Clase “OdbcDataAdapter”“OdbcDataAdapter” Permite actualizar la base de datos con los Permite actualizar la base de datos con los
cambios que se han producido en el cambios que se han producido en el DataSetDataSet De forma manual modificando las propiedades De forma manual modificando las propiedades
SelectCommandSelectCommand, , InsertCommandInsertCommand, , UpdateCommandUpdateCommand y y DeleteCommandDeleteCommand
De forma automática con De 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 diferentes Modificar el programa anterior para recuperar datos de diferentes
formasformas Llamar a un procedimiento remoto y recuperar los datos que Llamar 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 de El objeto se obtiene de OdbcConnectionOdbcConnection
Método Método BeginTransaction()BeginTransaction() Se le puede pasar el nivel de aislamiento, sino utiliza el Se le puede pasar el nivel de aislamiento, sino utiliza el
por defecto del driver.por defecto del driver.
Se le pasa una referencia al objeto Se le pasa una referencia al objeto OdbcCommandOdbcCommand que haga las acciones de la que haga las acciones de la transacción.transacción.
Métodos Métodos Commit()Commit() y y Rollback()Rollback() para aceptar o para 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 las ODBC es una capa intermedia entre las
aplicaciones y los SGBD que simplifica el aplicaciones 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 Claro ejemplo, MS no lo incluye en la
plataforma .NET, sino que lo deja como una librería plataforma .NET, sino que lo deja como una librería externa, apostando más por OLEDB.externa, apostando más por OLEDB.
El modelo de acceso a datos de la El modelo de acceso a datos de la plataforma .NET (ADO.NET) basado en plataforma .NET (ADO.NET) basado en “Providers”“Providers” simplifica el acceso a datos y lo simplifica el acceso a datos y lo hace muy intiutivo.hace muy intiutivo.
En .NET existe un En .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/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ón Enumeración OdbcTypeOdbcType contiene los contiene 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?