conexión a sql server con c#.net a través de odbc

36
ODBC ODBC Conexión a SQL Server con Conexión a SQL Server con C#.NET a través de ODBC C#.NET a través de ODBC Orlando Alemán Ortiz Orlando Alemán Ortiz Rayco J. Araña Rayco J. Araña Rodríguez Rodríguez

Upload: orlando-aleman

Post on 13-Jun-2015

11.457 views

Category:

Technology


3 download

DESCRIPTION

Utilización de ODBC para realizar la conexión con SQL Server desde C# .NET

TRANSCRIPT

Page 1: Conexión a SQL Server con C#.NET a través de 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

Page 2: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 3: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 4: Conexión a SQL Server con C#.NET a través de ODBC

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.)

Page 5: Conexión a SQL Server con C#.NET a través de ODBC

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.

Page 6: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 7: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 8: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 9: Conexión a SQL Server con C#.NET a través de ODBC

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???

Page 10: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 11: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 12: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 13: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 14: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 15: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 16: Conexión a SQL Server con C#.NET a través de ODBC

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;”

Page 17: Conexión a SQL Server con C#.NET a través de ODBC

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.

Page 18: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 19: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 20: Conexión a SQL Server con C#.NET a través de ODBC

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..

Page 21: Conexión a SQL Server con C#.NET a través de ODBC

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”;

Page 22: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 23: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 24: Conexión a SQL Server con C#.NET a través de ODBC

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 de -> Indexador para acceder a los elementos de

la fila por nombre y/o por posiciónla 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

Page 25: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 26: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 27: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 28: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 29: Conexión a SQL Server con C#.NET a través de ODBC

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.

Page 30: Conexión a SQL Server con C#.NET a través de ODBC

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()

Page 31: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 32: Conexión a SQL Server con C#.NET a través de ODBC

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 hace simplifica el acceso a datos y lo hace muy intiutivo.muy intiutivo.

En .NET existe un En .NET existe un “Provider”“Provider” para SQL Server. para SQL Server.

Page 33: Conexión a SQL Server con C#.NET a través de ODBC

Í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

Page 34: Conexión a SQL Server con C#.NET a través de ODBC

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

Page 35: Conexión a SQL Server con C#.NET a través de ODBC

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.

Page 36: Conexión a SQL Server con C#.NET a través de ODBC

¿Preguntas?¿Preguntas?