Está en la página 1de 37

ADO.

NET
ADO.NET es un conjunto de componentes del software que pueden ser usados por los programadores para acceder a datos y a servicios de datos. Es una parte de la biblioteca de clases base que estn incluidas en el Microsoft .NET Framework. Es comnmente usado por los programadores para acceder y para modificar los datos almacenados en un Sistema Gestor de Bases de Datos Relacionales, aunque tambin puede ser usado para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolucin de la tecnologa ActiveX Data Objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido como un producto enteramente nuevo. Componente de software

Un componente UML con interfaces provedas y requeridas Componente de Software, un elemento de un sistema software que ofrece un conjunto de servicios, o funcionalidades, a travs de interfaces definidas. ADO.NET es un conjunto de clases que exponen servicios de acceso a datos para el programador de .NET. ADO.NET ofrece abundancia de componentes para la creacin de aplicaciones de uso compartido de datos distribuidas. Constituye una parte integral de .NET Framework y proporciona acceso a datos relacionales, XML y de aplicaciones. ADO.NET satisface diversas necesidades de desarrollo, como la creacin de clientes de base de datos de aplicaciones para usuario y objetos empresariales de nivel medio que utilizan aplicaciones, herramientas, lenguajes o exploradores de Internet.

Novedades en ADO.NET
.NET Framework 2.0
Las siguientes caractersticas son nuevas en ADO.NET versin 2.0.

Proveedores administrados
Enumeracin de servidores

Ofrece compatibilidad con la enumeracin de instancias activas de Microsoft SQL Server 2000 y

posterior. Para obtener ms informacin, vea Enumeracin de instancias de SQL Server. Procesamiento asincrnico

Permite realizar operaciones asincrnicas de base de datos mediante una API modelada despus del modelo asincrnico que utiliza .NET Framework. Para obtener ms informacin, vea Realizacin de

operaciones asincrnicas. Varios conjuntos de resultados activos (MARS)

Permite que las aplicaciones tengan ms de un SqlDataReader abierto en una conexin cuando cada instancia de SqlDataReader se inicia desde un comando distinto. Para obtener ms informacin,

vea Uso de varios conjuntos de resultados activos. Operaciones de copia masiva Permite realizar inserciones masivas rpidas mediante el proveedor de datos de .NET para SQL Server. Para obtener ms informacin, vea Realizacin de operaciones de copia masiva. Nuevos tipos de datos mximos de SQL Server Ofrece compatibilidad con los tipos de datos varchar(max), nvarchar(max), varbinary(max) en SQL Server 2005. Para obtener ms informacin, vea Trabajo con tipos de valores grandes Tipos definidos por el usuario de SQL Server Ofrece compatibilidad con tipos de datos definidos por el usuario (UDT) en SQL Server 2005. Para obtener ms informacin, vea Creacin y uso de tipos definidos por el usuario. Notificaciones de SQL Server

Permite que las aplicaciones .NET Framework enven un comando a SQL Server y soliciten que se genere una notificacin si la ejecucin del mismo comando fuera a producir conjuntos de resultados diferentes de los inicialmente recuperados. Para obtener ms informacin, vea Uso de notificaciones

de consulta. Transacciones con aislamiento de instantneas de SQL Server

Ofrece compatibilidad con el aislamiento de instantneas, un mecanismo de SQL Server 2005 diseado para reducir el bloqueo en aplicaciones OLTP. Para obtener ms informacin, vea Uso de

aislamiento de instantneas. Reflejo de bases de datos en SQL Server 2005

Ofrece compatibilidad con el reflejo de bases de datos en SQL Server 2005 con una nueva sintaxis de cadena de conexin para especificar un servidor asociado de conmutacin por error. Para obtener

ms informacin, vea Uso del reflejo de base de datos. Estadsticas de proveedor

Ofrece compatibilidad con la recuperacin de estadsticas de tiempo de ejecucin en SQL Server 2005. Actualmente hay disponibles 21 contadores diferentes desde el proveedor de .NET para SQL

Server. Para obtener ms informacin, vea Uso de estadsticas de proveedor. Cambio de contrasea en SQL Server 2005

Permite que las aplicaciones .NET Framework cambien la contrasea de una cuenta de usuario sin

necesidad de que intervenga el administrador. Para obtener ms informacin, vea ChangePassword. Procesamiento por lotes

Mejora el rendimiento de la aplicacin mediante la reduccin del nmero de viajes de ida y vuelta a la base de datos al aplicar las actualizaciones desde el DataSet. Para obtener ms informacin,

vea Realizar operaciones por lotes mediante DataAdapters. Seguimiento ADO.NET 2.0 presenta una nueva funcionalidad integrada de seguimiento de datos que admiten los proveedores de datos de .NET. Para obtener ms informacin, vea Seguimiento. Confianza parcial

Todos los proveedores de datos de Microsoft se admiten ahora en entornos de confianza parcial.

Para obtener ms informacin, vea Seguridad de acceso a cdigo y ADO.NET. Control de agrupamiento de conexiones

ADO.NET 2.0 presenta dos nuevos mtodos para borrar el grupo de conexin: ClearAllPools y ClearPool. Para obtener ms informacin, vea Uso de agrupacin de

conexiones. Compatibilidad con el tipo de datos XML de SQL Server

SQL Server 2005 tiene un nuevo tipo de datos XML y System.Data.SqlClient le ofrece una robusta compatibilidad en el cliente. Los valores XML se exponen mediante el marco System.Xml para

conseguir la completa integracin con el modelo de programacin .NET. Integracin con la optimizacin de transacciones del sistema y transacciones promocionadas para SQL Server 2005

.NET 2.0 incluye un nuevo marco de transacciones, accesible a travs del espacio de nombres System.Transactions. Al combinar System.Transactions para la administracin de transacciones distribuidas, System.Data.SqlClient para el acceso a la base de datos y SQL Server 2005 como servidor, es posible optimizar las transacciones distribuidas de modo que el costo extra de convertirlas en "distribuidas" slo se realice cuando las transacciones son realmente necesarias.

Informacin general acerca de ADO.NET


.NET Framework 2.0
ADO.NET proporciona acceso coherente a orgenes de datos como Microsoft SQL Server y XML, as como a orgenes de datos expuestos mediante OLE DB y ODBC. Las aplicaciones para usuarios que comparten datos pueden utilizar ADO.NET para conectar a estos orgenes de datos y recuperar, manipular y actualizar los datos contenidos. ADO.NET separa el acceso a datos de la manipulacin de datos y crea componentes discretos que se pueden utilizar por separado o conjuntamente. ADO.NET incluye proveedores de datos de .NET Framework para conectarse a una base de datos, ejecutar comandos y recuperar resultados. Los resultados se procesan directamente o se colocan en un objeto DataSet de ADO.NET con el fin de exponerlos al usuario para un propsito especfico, combinados con datos de varios orgenes, o de utilizarlos de forma remota entre niveles. El objeto DataSet de ADO.NET tambin puede utilizarse independientemente de un proveedor de datos de .NET Framework para administrar datos que son locales de la aplicacin o que proceden de un origen XML.

Las clases de ADO.NET se encuentran en el archivo System.Data.dll y estn integradas con las clases de XML que se encuentran en el archivo System.Xml.dll. Cuando se compila un cdigo que utiliza el espacio de nombres System. Data, es necesario hacer referencia a los archivos System.Data.dll y System.Xml.dll. Para obtener un ejemplo de una aplicacin de ADO.NET que se conecta a una base de datos, recupera datos de sta y, a continuacin, los muestra en el smbolo del sistema, vea Aplicacin de ejemplo de ADO.NET. ADO.NET proporciona funcionalidad a los programadores que escriben cdigo administrado similar a la funcionalidad que los objetos ADO (ActiveX Data Objects) proporcionan a los programadores de modelo de objetos componentes (COM) nativo. Para obtener ms informacin sobre las diferencias entre ADO y ADO.NET, veaADO.NET for the ADO Programmer en MSDN.

Objetivos de diseo para ADO.NET


.NET Framework 2.0
A medida que la programacin de aplicaciones ha evolucionado, las nuevas aplicaciones se han convertido en aplicaciones de correspondencia imprecisa basadas en el modelo de aplicacin Web. Las aplicaciones de hoy en da utilizan cada vez ms XML para codificar datos que se van a pasar a travs de conexiones de red. Las aplicaciones Web utilizan HTTP para las comunicaciones entre niveles y, por tanto, deben controlar expresamente el mantenimiento del estado de una solicitud a otra. Este nuevo modelo es muy diferente del estilo de programacin con conexin y de correspondencia precisa que caracterizaba la poca cliente-servidor, en la que una conexin permaneca abierta durante toda la vida del programa y no haca falta controlar el estado. A la hora de disear herramientas y tecnologas para satisfacer las necesidades del programador de hoy en da, Microsoft se dio cuenta de que haca falta un modelo de programacin totalmente nuevo para el acceso a datos, un modelo basado en .NET Framework. Tomar .NET Framework como base garantizaba que la tecnologa de acceso a datos sera uniforme: los componentes compartiran un sistema de tipos, unos modelos de diseo y unas convenciones de nomenclatura. ADO.NET se dise para cumplir con los objetivos de este nuevo modelo de programacin: arquitectura de datos sin mantener una conexin abierta, estrecha integracin con XML, representacin comn de datos con la posibilidad de combinar datos procedentes de mltiples y variados orgenes, y servicios optimizados para interactuar con una base de datos, todo ello nativo de .NET Framework. A la hora de crear ADO.NET, Microsoft se propuso los siguientes objetivos de diseo: Aprovechar la tecnologa de objetos ADO (ActiveX Data Objects) actuales.

Admitir el modelo de programacin n-tier Integrar la compatibilidad con XML.

Arquitectura de ADO.NET
.NET Framework 2.0
Tradicionalmente, el procesamiento de datos ha dependido principalmente de un modelo de dos niveles basado en una conexin. A medida que el procesamiento de datos utiliza cada vez ms arquitecturas de varios niveles, los programadores estn pasando a un enfoque sin conexin con el fin de proporcionar una escalabilidad mejor para sus aplicaciones.

Componentes de ADO.NET
Existen dos componentes de ADO.NET que se pueden utilizar para obtener acceso a datos y manipularlos: Proveedores de datos de .NET Framework

Proveedores de datos de .NET Framework


Los proveedores de datos de .NET Framework son componentes diseados explcitamente para la manipulacin de datos y el acceso rpido a datos de slo lectura y slo avance. El objeto Connection proporciona conectividad a un origen de datos. El objeto Command permite tener acceso a comandos de base de datos para devolver datos, modificar datos, ejecutar procedimientos almacenados y enviar o recuperar informacin sobre parmetros. El objeto DataReader proporciona una secuencia de datos de alto rendimiento desde el origen de datos. Por ltimo, el objeto DataAdapter proporciona el puente entre el objeto DataSet y el origen de datos. El DataAdapter utiliza objetosCommand para ejecutar comandos SQL en el origen de datos tanto para cargar el DataSet con datos como para reconciliar en el origen de datos los cambios aplicados a los datos incluidos en el DataSet.

El DataSet

DataSet
El DataSet de ADO.NET est expresamente diseado para el acceso a datos independientemente del origen de datos. Como resultado, se puede utilizar con mltiples y distintos orgenes de datos, con datos XML o para administrar datos locales de la aplicacin. El DataSet contiene una coleccin de uno o ms objetos DataTable formados por filas y columnas de datos, as como informacin sobre claves principales, claves externas, restricciones y relaciones relativa a los datos incluidos en los objetos DataTable. En el diagrama siguiente se ilustra la relacin entre un proveedor de datos de .NET Framework y un DataSet. Arquitectura de ADO.NET

DataSet de ADO.NET
.NET Framework 2.0
Otras versiones

Personas que lo han encontrado til: 8 de 8 - Valorar este tema El objeto DataSet es esencial para la compatibilidad con situaciones de datos distribuidos desconectados con ADO.NET. El DataSet es una representacin de datos residente en memoria que proporciona un modelo de programacin relacional coherente con independencia del origen de datos. Se puede utilizar con muchos y distintos orgenes de datos, con datos XML o para administrar datos locales de la aplicacin. El DataSet representa un conjunto completo de datos que incluye tablas relacionadas y restricciones, as como relaciones entre las tablas. En la siguiente ilustracin se muestra el modelo de objetos DataSet. Modelo de objetos DataSet

Los mtodos y objetos de un DataSet concuerdan con los del modelo de base de datos relacional. El DataSet tambin puede mantener y recargar su contenido como XML y su esquema como esquema de lenguaje de definicin de esquemas XML (XSD). Para obtener ms informacin, vea Utilizar XML en un DataSet.

DataTableCollection
Un DataSet de ADO.NET contiene una coleccin de cero o ms tablas representadas por objetos DataTable. La DataTableCollection contiene todos los objetos DataTable de un DataSet. La DataTable se define en el espacio de nombres System. Data y representa una nica tabla de datos residentes en memoria. Contiene una coleccin de columnas representadas por una DataColumnCollection, as como restricciones representadas por una ConstraintCollection, que juntas definen el esquema de la tabla. Una DataTabletambin contiene una coleccin de filas representadas por la DataRowCollection, que contiene los datos de la tabla. Una DataRow conserva, junto con su estado actual, sus versiones actual y original para identificar los cambios en los valores almacenados en la fila.

DataRelationCollection
Un DataSet contiene relaciones en su objeto DataRelationCollection. Una relacin, representada por el objeto DataRelation, asocia las filas de una DataTable con las filas de otra DataTable. Las relaciones son anlogas a las rutas de acceso de unin que podran existir entre columnas de claves principales y externas en una base de datos relacional. Una DataRelation identifica las columnas coincidentes en dos tablas de un DataSet. Las relaciones permiten el desplazamiento entre tablas de un DataSet. Los elementos esenciales de una DataRelation son el nombre de la relacin, el nombre de las tablas que se relacionan y las columnas relacionadas de cada tabla. Es posible crear relaciones con ms de una columna por tabla si se especifica una matriz de objetos DataColumn como columnas de claves. Cuando agrega una relacin al DataRelationCollection, puede agregar opcionalmente una UniqueKeyConstraint y

una ForeignKeyConstraintpara imponer restricciones de integridad cuando se realizan cambios en valores de columna relacionados.

ExtendedProperties
DataSet, DataTable y DataColumn tienen toda una propiedad ExtendedProperties. ExtendedProperties es una PropertyCollection en la que puede colocar informacin personalizada, como la instruccin SELECT que se ha utilizado para generar el conjunto de resultados o la hora en que se generaron los datos. La coleccin ExtendedProperties se mantiene con la informacin de esquema del DataSet.

Aplicacin de ejemplo de ADO.NET


.NET Framework 2.0
A continuacin se muestra una sencilla aplicacin de ADO.NET que devuelve resultados desde un origen de datos y los escribe en la consola o en el smbolo del sistema. En los ejemplos de este tema se muestra cmo conectarse a datos y cmo recuperarlos mediante el proveedor de datos de .NET Framework para SQL Server (System.Data.SqlClient), el proveedor de datos de .NET Framework para OLE DB (System.Data.OleDb), el proveedor de datos de .NET Framework para ODBC (System.Data.Odbc) y el proveedor de datos de .NET Framework para Oracle (System.Data.OracleClient). Es posible utilizar todos los proveedores de datos en una nica aplicacin, si as se desea. En el siguiente ejemplo de SqlClient se da por sentado que puede conectarse a la base de datos de ejemplo Northwind en Microsoft SQL Server 7.0 o posterior y se devuelve una lista de registros de la tabla Categories mediante un SqlDataReader. En los ejemplos de OleDb y Odbc se presupone una conexin a la base de datos de ejemploNorthwind de Microsoft Access. En el ejemplo de OracleClient se presupone una conexin a DEMO.CUSTOMER en un servidor Oracle. Tambin debe agregarse una referencia a System.Data.OracleClient.dll. Para obtener ms informacin sobre DataReader, vea Recuperar datos mediante DataReader).

SqlClient
C# VB

using System; using System.Data; using System.Data.SqlClient; class Program { static void Main()

{ string connectionString = GetConnectionString(); string queryString = "SELECT CategoryID, CategoryName FROM dbo.Categories;"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryString; try { connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}", reader[0], reader[1]); } reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } static private string GetConnectionString() { // To avoid storing the connection string in your code, // you can retrieve it from a configuration file. return "Data Source=(local);Initial Catalog=Northwind;" + "Integrated Security=SSPI"; } }

OleDb
C# VB

using System; using System.Data; using System.Data.OleDb; class Program { static void Main() {

string connectionString = GetConnectionString(); string queryString = "SELECT CategoryID, CategoryName FROM Categories;"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand command = connection.CreateCommand(); command.CommandText = queryString; try { connection.Open(); OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}", reader[0], reader[1]); } reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } static private string GetConnectionString() { // To avoid storing the connection string in your code, // you can retrieve it from a configuration file. // Assumes Northwind.mdb is located in the c:\Data folder. return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "c:\\Data\\Northwind.mdb;User Id=admin;Password=;"; } }

Odbc
C# VB

using System; using System.Data; using System.Data.Odbc; class Program { static void Main() {

string connectionString = GetConnectionString(); string queryString = "SELECT CategoryID, CategoryName FROM Categories;"; using (OdbcConnection connection = new OdbcConnection(connectionString)) { OdbcCommand command = connection.CreateCommand(); command.CommandText = queryString; try { connection.Open(); OdbcDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}", reader[0], reader[1]); } reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } static private string GetConnectionString() { // To avoid storing the connection string in your code, // you can retrieve it from a configuration file. // Assumes Northwind.mdb is located in the c:\Data folder. return "Driver={Microsoft Access Driver (*.mdb)};" + "Dbq=c:\\Data\\Northwind.mdb;Uid=Admin;Pwd=;"; } }

OracleClient
C# VB

using System; using System.Data; using System.Data.OracleClient; class Program { static void Main() {

string connectionString = GetConnectionString(); string queryString = "SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER"; using (OracleConnection connection = new OracleConnection(connectionString)) { OracleCommand command = connection.CreateCommand(); command.CommandText = queryString; try { connection.Open(); OracleDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}", reader[0], reader[1]); } reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } static private string GetConnectionString() { // To avoid storing the connection string in your code, // you can retrieve it from a configuration file. // Assumes Northwind.mdb is located in the c:\Data folder. return "Data Source=ThisOracleServer;Integrated Security=yes;"; } }

Ejemplo: Utilizando ADO.NET Operaciones en Consola MySQL


using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using MySql.Data.MySqlClient;

namespace CAlibros

{ class Program { static void Main(string[] args) { LeerDatos(); // Invocar Func. Leer Datos }

//---Menu Principal //................................. static void Menu() { Console.WriteLine(""); Console.WriteLine("--- Menu Libros ---"); Console.WriteLine("1) Visualizar Datos"); Console.WriteLine("2) Agregar Libro"); Console.WriteLine("3) Editar Libro"); Console.WriteLine("4) Buscar Libro"); Console.WriteLine("5) Elimibar Libro"); Console.WriteLine("6) Salir"); Console.Write("Seleccione una Opcion:"); } //--Func Leer Datos //------------------------------------

static void LeerDatos() { int opc; String nombre = ""; String autor = ""; int clave = 0; do { opc = 0; Menu(); // Invocar Menu opc = Convert.ToInt32(Console.ReadLine());

if (opc == 1) // Mostrar Datos { mostrarDatos(); // Func. mostrar datos } if (opc == 2) // Agregar Libro { Console.Write("Nombre del Libro: "); nombre = Console.ReadLine(); Console.Write("Autor: "); autor = Console.ReadLine(); if (AgregarLibro(nombre, autor) == true) // Invocar Func. Add libro { Console.WriteLine("Libro Agregado");

} } if (opc == 3) { // Editar Libro Console.Write("ID: "); clave = Convert.ToInt32(Console.ReadLine()); Console.Write("Nombre del Libro: "); nombre = Console.ReadLine(); Console.Write("Autor: "); autor = Console.ReadLine(); if (EditarLibro(clave, nombre, autor) == true) // Invocar Func. Edit libro { Console.WriteLine("!! Libro Editado !!"); } else { Console.WriteLine("!! Libro no existe !!"); } } if (opc == 4) { Console.Write("Clave del Libro:"); BuscarLibro(Convert.ToInt32(Console.ReadLine())); } if (opc == 5) { // Eliminar Libro Console.Write("Ingrese ID: "); if (EliminarLibro(Convert.ToInt32(Console.ReadLine()))==true) // Invocar Func. Elim libro {

Console.WriteLine("!! Libro Eliminado !!"); } else { Console.WriteLine("!! El Libro no existe !!"); } } } while (opc != 6); }

//..Mostrar Libros //............................................................. static void mostrarDatos() { string connectionString = GetConnectionString(); string queryString = "SELECT * FROM libros"; using (MySqlConnection connection = new MySqlConnection(connectionString)) { MySqlCommand command = connection.CreateCommand(); command.CommandText = queryString;

try { connection.Open();

MySqlDataReader reader = command.ExecuteReader(); Console.WriteLine(""); while (reader.Read())

{ Console.WriteLine("\t{0}\t{1}\t{2}",reader[0], reader[1],reader[2]); }

reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }

//... Add Libro //..................................................................... static Boolean AgregarLibro(String nom, String aut) { int res = 0; string connectionString = GetConnectionString(); string queryString = "Insert into libros(nombre,autor)values('"+nom+"','"+aut+"')"; using (MySqlConnection connection = new MySqlConnection(connectionString)) { MySqlCommand command = connection.CreateCommand(); command.CommandText = queryString;

try { connection.Open(); res = command.ExecuteNonQuery(); if (res != 0) { return true; } else { return false; } } catch (Exception ex) { Console.WriteLine(ex.Message); return false; } } }

//... Fuunc. Eliminar Libro //.......................................................................... static Boolean EliminarLibro(int clave) { int res = 0; string connectionString = GetConnectionString(); string query = "Delete from libros where id = " + clave + "";

using (MySqlConnection cnn = new MySqlConnection(connectionString)) { MySqlCommand command = cnn.CreateCommand(); command.CommandText = query; try { cnn.Open(); res = command.ExecuteNonQuery(); // Ejecutar Consulta if (res != 0) { return true; } else { return false; }

} catch (Exception ex) { Console.WriteLine(ex.Message); return false; } } }

//... Fuunc. Editar Libro

//.......................................................................... static Boolean EditarLibro(int clave, String nom,String aut) { int res = 0; string connectionString = GetConnectionString(); string query = "Update libros set nombre = '" + nom + "',autor = '"+ aut +"' where id = "+clave+""; using (MySqlConnection cnn = new MySqlConnection(connectionString)) { MySqlCommand command = cnn.CreateCommand(); command.CommandText = query; try { cnn.Open(); res = command.ExecuteNonQuery(); // Ejecutar Consulta if (res != 0) { return true; } else { return false; }

} catch (Exception ex) {

Console.WriteLine(ex.Message); return false; } } }

//..Buscar Libro //............................................................. static void BuscarLibro(int clave) { string connectionString = GetConnectionString(); string queryString = "SELECT * FROM libros where id = " + clave + ""; using (MySqlConnection connection = new MySqlConnection(connectionString)) { MySqlCommand command = connection.CreateCommand(); command.CommandText = queryString;

try { connection.Open();

MySqlDataReader reader = command.ExecuteReader(); Console.WriteLine(""); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}\t{2}", reader[0], reader[1], reader[2]);

reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }

//--- Retornar Conexion static private string GetConnectionString() { return "server=localhost;User Id=root;password=1234;Persist Security Info=True;database=biblioteca"; } } }

SqlClient
C# VB

Option Explicit On Option Strict On Imports System Imports System.Data Imports System.Data.SqlClient Public Class Program Public Shared Sub Main() Dim connectionString As String = GetConnectionString() Dim queryString As String = _ "SELECT CategoryID, CategoryName FROM dbo.Categories;" Using connection As New SqlConnection(connectionString) Dim command As SqlCommand = connection.CreateCommand() command.CommandText = queryString Try connection.Open() Dim dataReader As SqlDataReader = _ command.ExecuteReader() Do While dataReader.Read() Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _ dataReader(0), dataReader(1)) Loop dataReader.Close() Catch ex As Exception Console.WriteLine(ex.Message) End Try End Using End Sub Private Shared Function GetConnectionString() As String ' To avoid storing the connection string in your code, ' you can retrieve it from a configuration file. Return "Data Source=(local);Initial Catalog=Northwind;" _ & "Integrated Security=SSPI;" End Function End Class

OleDb
C# VB

Option Explicit On Option Strict On Imports System Imports System.Data Imports System.Data.OleDb Public Class Program Public Shared Sub Main() Dim connectionString As String = GetConnectionString() Dim queryString As String = _ "SELECT CategoryID, CategoryName FROM Categories;" Using connection As New OleDbConnection(connectionString) Dim command As OleDbCommand = connection.CreateCommand() command.CommandText = queryString Try connection.Open() Dim dataReader As OleDbDataReader = _ command.ExecuteReader() Do While dataReader.Read() Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _ dataReader(0), dataReader(1)) Loop dataReader.Close() Catch ex As Exception Console.WriteLine(ex.Message) End Try End Using End Sub Private Shared Function GetConnectionString() As String ' To avoid storing the connection string in your code, ' you can retrieve it from a configuration file. ' Assumes Northwind.mdb is located in c:\Data folder. Return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ & "c:\Data\Northwind.mdb;User Id=admin;Password=;" End Function End Class

Odbc
C# VB

Option Explicit On Option Strict On Imports System Imports System.Data Imports System.Data.Odbc Public Class Program Public Shared Sub Main() Dim connectionString As String = GetConnectionString() Dim queryString As String = _ "SELECT CategoryID, CategoryName FROM Categories;" Using connection As New OdbcConnection(connectionString) Dim command As OdbcCommand = connection.CreateCommand() command.CommandText = queryString Try connection.Open() Dim dataReader As OdbcDataReader = _ command.ExecuteReader() Do While dataReader.Read() Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _ dataReader(0), dataReader(1)) Loop dataReader.Close() Catch ex As Exception Console.WriteLine(ex.Message) End Try End Using End Sub Private Shared Function GetConnectionString() As String ' To avoid storing the connection string in your code, ' you can retrieve it from a configuration file. ' Assumes Northwind.mdb is located in c:\Data folder. Return "Driver={Microsoft Access Driver (*.mdb)};" _ & "Dbq=c:\Data\Northwind.mdb;Uid=Admin;Pwd=;" End Function End Class

OracleClient
C# VB

Option Explicit On Option Strict On Imports System Imports System.Data Imports System.Data.OracleClient Public Class Program Public Shared Sub Main() Dim connectionString As String = GetConnectionString() Dim queryString As String = _ "SELECT CUSTOMER_ID, NAME FROM DEMO.CUSTOMER" Using connection As New OracleConnection(connectionString) Dim command As OracleCommand = connection.CreateCommand() command.CommandText = queryString Try connection.Open() Dim dataReader As OracleDataReader = _ command.ExecuteReader() Do While dataReader.Read() Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _ dataReader(0), dataReader(1)) Loop dataReader.Close() Catch ex As Exception Console.WriteLine(ex.Message) End Try End Using End Sub Private Shared Function GetConnectionString() As String ' To avoid storing the connection string in your code, ' you can retrieve it from a configuration file. Return "Data Source=ThisOracleServer;Integrated Security=yes;" End Function End Class

Ejemplo: Utilizando ADO.NET Operaciones en Consola MySQL


using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using MySql.Data.MySqlClient;

namespace CAlibros { class Program { static void Main(string[] args) { LeerDatos(); // Invocar Func. Leer Datos }

//---Menu Principal //................................. static void Menu() { Console.WriteLine(""); Console.WriteLine("--- Menu Libros ---"); Console.WriteLine("1) Visualizar Datos"); Console.WriteLine("2) Agregar Libro"); Console.WriteLine("3) Editar Libro"); Console.WriteLine("4) Buscar Libro");

Console.WriteLine("5) Elimibar Libro"); Console.WriteLine("6) Salir"); Console.Write("Seleccione una Opcion:"); } //--Func Leer Datos //-----------------------------------static void LeerDatos() { int opc; String nombre = ""; String autor = ""; int clave = 0; do { opc = 0; Menu(); // Invocar Menu opc = Convert.ToInt32(Console.ReadLine());

if (opc == 1) // Mostrar Datos { mostrarDatos(); // Func. mostrar datos } if (opc == 2) // Agregar Libro {

Console.Write("Nombre del Libro: "); nombre = Console.ReadLine(); Console.Write("Autor: "); autor = Console.ReadLine(); if (AgregarLibro(nombre, autor) == true) // Invocar Func. Add libro { Console.WriteLine("Libro Agregado"); } } if (opc == 3) { // Editar Libro Console.Write("ID: "); clave = Convert.ToInt32(Console.ReadLine()); Console.Write("Nombre del Libro: "); nombre = Console.ReadLine(); Console.Write("Autor: "); autor = Console.ReadLine(); if (EditarLibro(clave, nombre, autor) == true) // Invocar Func. Edit libro { Console.WriteLine("!! Libro Editado !!"); } else { Console.WriteLine("!! Libro no existe !!"); } } if (opc == 4) {

Console.Write("Clave del Libro:"); BuscarLibro(Convert.ToInt32(Console.ReadLine())); } if (opc == 5) { // Eliminar Libro Console.Write("Ingrese ID: "); if (EliminarLibro(Convert.ToInt32(Console.ReadLine()))==true) // Invocar Func. Elim libro { Console.WriteLine("!! Libro Eliminado !!"); } else { Console.WriteLine("!! El Libro no existe !!"); } } } while (opc != 6); }

//..Mostrar Libros //............................................................. static void mostrarDatos() { string connectionString = GetConnectionString(); string queryString = "SELECT * FROM libros"; using (MySqlConnection connection = new MySqlConnection(connectionString)) { MySqlCommand command = connection.CreateCommand(); command.CommandText = queryString;

try { connection.Open();

MySqlDataReader reader = command.ExecuteReader(); Console.WriteLine(""); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}\t{2}",reader[0], reader[1],reader[2]); }

reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }

//... Add Libro //..................................................................... static Boolean AgregarLibro(String nom, String aut) { int res = 0;

string connectionString = GetConnectionString(); string queryString = "Insert into libros(nombre,autor)values('"+nom+"','"+aut+"')"; using (MySqlConnection connection = new MySqlConnection(connectionString)) { MySqlCommand command = connection.CreateCommand(); command.CommandText = queryString;

try { connection.Open(); res = command.ExecuteNonQuery(); if (res != 0) { return true; } else { return false; } } catch (Exception ex) { Console.WriteLine(ex.Message); return false; } } }

//... Fuunc. Eliminar Libro //.......................................................................... static Boolean EliminarLibro(int clave) { int res = 0; string connectionString = GetConnectionString(); string query = "Delete from libros where id = " + clave + ""; using (MySqlConnection cnn = new MySqlConnection(connectionString)) { MySqlCommand command = cnn.CreateCommand(); command.CommandText = query; try { cnn.Open(); res = command.ExecuteNonQuery(); // Ejecutar Consulta if (res != 0) { return true; } else { return false; }

} catch (Exception ex) {

Console.WriteLine(ex.Message); return false; } } }

//... Fuunc. Editar Libro //.......................................................................... static Boolean EditarLibro(int clave, String nom,String aut) { int res = 0; string connectionString = GetConnectionString(); string query = "Update libros set nombre = '" + nom + "',autor = '"+ aut +"' where id = "+clave+""; using (MySqlConnection cnn = new MySqlConnection(connectionString)) { MySqlCommand command = cnn.CreateCommand(); command.CommandText = query; try { cnn.Open(); res = command.ExecuteNonQuery(); // Ejecutar Consulta if (res != 0) { return true;

} else { return false; }

} catch (Exception ex) { Console.WriteLine(ex.Message); return false; } } }

//..Buscar Libro //............................................................. static void BuscarLibro(int clave) { string connectionString = GetConnectionString(); string queryString = "SELECT * FROM libros where id = " + clave + ""; using (MySqlConnection connection = new MySqlConnection(connectionString)) { MySqlCommand command = connection.CreateCommand(); command.CommandText = queryString;

try {

connection.Open();

MySqlDataReader reader = command.ExecuteReader(); Console.WriteLine(""); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}\t{2}", reader[0], reader[1], reader[2]); }

reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }

//--- Retornar Conexion static private string GetConnectionString() { return "server=localhost;User Id=root;password=1234;Persist Security Info=True;database=biblioteca"; } }

http://msdn.microsoft.com/es-es/library/e80y5yhx(v=vs.80).aspx http://msdn.microsoft.com/es-es/library/ex6y04yf(v=vs.80).aspx http://msdn.microsoft.com/es-es/library/h43ks021(v=vs.80).aspx http://msdn.microsoft.com/es-es/library/7b13c12s(v=vs.80).aspx http://msdn.microsoft.com/es-es/library/27y4ybxw(v=vs.80).aspx http://msdn.microsoft.com/es-es/library/zb0sdh0b(v=vs.80).aspx http://msdn.microsoft.com/es-es/library/dw70f090(v=vs.80).aspx?cs-savelang=1&cs-lang=csharp#code-snippet-1 http://msdn.microsoft.com/es-es/library/dw70f090(v=vs.80).aspx?cs-savelang=1&cs-lang=vb#code-snippet-1