El lenguaje C# 3.0 de Visual Studio 2008 con el Framework .NET v. 3.5 se ha convertido en la elección para muchos programadores por su flexibilidad, su seguridad, su limpio diseño, su orientación a objetos y su inmensa biblioteca de funciones.Las bases de datos son el fundamento de la programación de aplicaciones comerciales y en pleno siglo XXI evolucionan hacia a programación orientada a objetos, el lenguaje XML y las aplicaciones web.Este libro está dirigido a los programadores, analistas e ingenieros que desean entender estas técnicas ilustradas inmediatamente mediante ejemplos claros de código fuente en C#.Se da un tratamiento muy completo a las técnicas más innovadoras de programación de bases de datos, especialmente reforzados con Microsoft SQL Server 7.0, 2000, 2005 y 2008.El lector encontrará tanto temas de iniciación como avanzados.Dentro de los temas iniciales este libro cubre SQL, análisis Entidad/Relación, la tecnología ADO.NET, conexiones, ODBC, estructuras de bases de datos, transacciones, bloqueos, eventos, consultas clásicas, comandos, controles e interfaces.También encontrará temas avanzados como encriptación, procedimientos almacenados (stored procedures), arquitectura multicapa y objetos de negocio, gestión de errores y excepciones, parámetros de entrada y salida en procedimientos almacenados y extendidos, campos binarios largos (BLOB) para tratamiento de imágenes, archivos incrustados y columnas de desbordamiento XML, consultas en formato XML, XPath, DOM, aplicación de transformaciones XSL para la generación de páginas HTML (XHTML), comunicación de paquetes XML con OpenXML y BulkLoad, extended stored procedures con Visual C++ .NET, sistemas conectados y desconectados mediante DataSets y DataAdapters… y mucho más.Finalmente se trata la parte más innovadora del tratamiento de bases de datos: Linq para objetos, Linq para SQL y Link para entidades (Entity Framework).En la web del libro se pueden recoger los ejemplos de código fuente tratados y las actualizaciones y nuevas aportaciones que irán surgiendo. ÍndiceINTRODUCCIÓN CAPÍTULO 1. ARRANQUE RÁPIDO CON BASES DE DATOS 1.1 APLICACIONES SIN ESCRIBIR NI UNA SOLA LÍNEA 1.1.1 Crear una conexión contra una base de datos 1.1.2 La maravillosa combinación DataSet + Formulario CAPÍTULO 2. SQL Y EL ANÁLISIS ENTIDAD/RELACIÓN 2.1 APRENDER SQL PENSANDO EN OBJETOS 2.2 ¿PARA QUÉ SIRVE SQL? 2.3 EL MODELO JERÁRQUICO 2.4 EL MODELO EN RED 2.5 EL MODELO RELACIONAL2.6 ORIENTACIÓN A OBJETOS Y ANÁLISIS E/R 2.6.1 Tipos de objetos para bases de datos POO 2.6.2 Introducción al análisis Entidad/Relación 2.6.3 Llevando a la práctica Entidad/Relación 2.6.4 La necesidad de un identificador único o GUID 2.6.5 Relaciones recursivas 2.6.6 Simbología de cardinalidad 2.6.7 Árboles recursivos: la técnica de puntero al padre 2.7 PARTES DEL LENGUAJE SQL 2.8 LENGUAJE DE MANEJO DE DATOS (DML) 2.8.1 Instrucción SELECT 2.9 CLÁUSULA LIKE PARA CADENAS ALFANUMÉRICAS 2.9.1 Diferencias de sintaxis LIKE entre Access y SQL Server2.10 FUNCIONES ESCALARES PARA SELECT 2.10.1 Nombres de variables para cálculos escalares 2.11 SELECT DE FECHAS 2.11.1 Diferencias con la sintaxis de fechas de Access 2.12 LA CLÁUSULA IN Y LOS RANGOS 2.13 PROBAR LAS SELECT CON SQL SERVER 2.14 EXPERIMENTOS CON QUERY ANALYZER 2.14.1 Cómo saber quién está conectado al sistema 2.14.2 Cómo obtener listados de tablas de la base de datos 2.14.3 Cómo obtener descripciones de campos de una tabla 2.14.4 Qué hay detrás de sp_tables y sp_columns 2.14.5 Enviar una consulta SELECT sencilla 2.15 SELECTS CONTRA VARIAS TABLAS 2.16 JOINS O CONSULTAS CON VÍNCULOS ENTRE TABLAS 2.17 SELECT UNION:UNIR VARIAS SELECTS 2.18 CONSULTAS DE ACCIÓN O ACTION QUERIES 2.19 INSTRUCCIÓN INSERT 2.20 INSERT PARA USUARIOS DEL MOTOR DE ACCESS 2.21 INSTRUCCIÓN DELETE 2.22 INSTRUCCIÓN UPDATE 2.23 SQL DML ADJUNTANDO TABLAS CON ACCESS 2.24 CÓMO ADJUNTAR TABLAS A TRAVÉS DE ODBC 2.24.1 Configurar una fuente de datos ODBC 2.24.2 Adjuntar la tabla de SQL Server desde Access 2.25 TRANSACCIONES 2.25.1 Dónde encontrar drivers de 16 bits que soporten transacciones 2.25.2 Nivel de aislamiento entre transacciones 2.26 DDL: LENGUAJE DE DEFINICIÓN DE DATOS 2.27 CREATE TABLE 2.27.1 NUMERIC es NUMBER en Access 2.27.2 Tipos y longitudes de campos 2.27.3 Equivalencias de tipos de datos respecto al SQL estándar 2.28 DROP TABLE2.29 CREATE TABLE Y SELECT INTO 2.30 ALTER TABLE: MODIFICANDO LA ESTRUCTURA DE LA TABLA 2.31 CREATE INDEX: CREACIÓN DE ÍNDICES 2.32 ÍNDICES COMPUESTOS2.33 DROP INDEX: ELIMINACIÓN DE ÍNDICES 2.34 REGLAS DE INTEGRIDAD REFERENCIAL CAPÍTULO 3. ADO.NET: OBJETOS PARA EL ACCESO A DATOS 3.1 ¿QUÉ ES ADO.NET? 3.2 TECNOLOGÍAS DE ACCESO A DATOS 3.2.1 Tecnologías abiertas 3.2.2 ODBC 3.2.3 OLEDB 3.2.4 ADO 3.2.5 La necesidad de .NET3.3 ADO.NET CAPÍTULO 4. CONEXIONES 4.1 LA CONEXIÓN CON ADO.NET 4.2 SQL SERVER: UNA MUY BUENA OPCIÓN 4.2.1 Cómo conectar desde ADO.NET mediante ODBC 4.2.2 Cómo conectar desde driver específico de SQL Server 4.2.3 Cómo crear una fuente de datos ODBC en 10 pasos 4.2.4 Cadenas de conexión contra bases de datos 4.2.5 Cadenas de conexión en archivos de configuración 4.2.6 Cadenas de conexión y problemas de seguridad 4.2.7 Encriptación de la sección ConnectionStrings de App.Config 4.2.8 Encriptación de password 4.2.9 La clase ConnectionStringBuilder 4.2.10 Escoger un buen sistema de encriptación 4.2.11 La encriptación TripleDES 4.2.12 La rutina EncriptarTripleDES 4.2.13 Función para la desencriptación TripleDES 4.2.14 Para encriptar usando estas funciones 4.2.15 Para desencriptar 4.2.16 Uso de la encriptación para recuperar la contraseña 4.2.17 Mayor seguridad con el número de tarjeta de red 4.2.18 Conexiones lentas 4.3 MÉTODOS PROPIOS DE SQLCONNECTION 4.3.1 Transacciones a partir de la conexión 4.3.2 Estadísticas acerca de las conexiones 4.3.3 GetSchema: Obtención de datos de esquema 4.3.4 Devolver la estructura de una tabla 4.3.5 El método ChangeDatabase 4.4 EVENTOS DE LA CONEXIÓN 4.4.1 El evento de cambio de estado (StateChange) 4.4.2 Redirigir errores hacia mensajes de información 4.4.3 Enviar mensajes informativos desde SQL Server 4.4.4 Disparar errores inexistentes desde SQL Server 4.5 CONCLUSIÓN SOBRE LAS CONEXIONES CAPÍTULO 5. CONSULTAS, COMANDOS Y PROCEDIMIENTOS ALMACENADOS 5.1 PRIMERO CONECTAR, LUEGO CONSULTAR 5.1.1 Un ejemplo para empezar 5.2 VOLCAR CONTENIDOS EN UNA LISTA 5.3 MOSTRAR DATOS EN UNA LISTVIEW 5.4 FUNCIÓN GENÉRICA PARA RELLENAR CONTROLES LISTVIEW 5.5 EJECUTAR COMANDOS DE ACCIÓN 5.5.1 Comandos con parámetros 5.5.2 Llamadas a pro