Вы находитесь на странице: 1из 30

Ambrosio Cardoso Jimnez Marzo 2007

Qu es ADO.NET?
Es una tecnologa de acceso a datos ADO.NET utiliza un modelo de acceso pensado para entornos desconectados. Esto quiere decir que la aplicacin se conecta al origen de datos, hace lo que tiene que hacer, por ejemplo seleccionar registros, los carga en memoria y se desconecta del origen de datos. ADO.NET es un conjunto de clases que usted utiliza para acceder y manipular orgenes de datos como por ejemplo, una base de datos en SQL Server o una plantilla de Excel ADO.NET utiliza XML como el formato para transmitir datos desde y hacia su base de datos y su aplicacin Web

Por qu ADO.NET?
Interoperabilidad

Basado en estndares como XML, XSD Escalabilidad Objetivos distribuidos, escenarios web desconectados Modelos Arquitectura distribuida reemplaza cliente/servidor Integracin de datos de mltiples y diferentes fuentes

Capa de Presentacin
Windows Forms
MyApp.Exe

DataSet

Capa de Negocio
Web Forms
IE

Capa Datos
Data Adapter Data Adapter

Internet Intranet DataSet


XML

Data Object (Class) DataSet

Business to Business

(Por ejemplo BizTalk)

Dnde est ADO.NET?


Los objetos de Ado.Net residen en los siguientes nombres de espacios: System.Data; System.Data.Odbc; //--- para cualquier base de datos: Access, postgres, mysql, etc. System.Data.OleDb; //--- para cualquier BD que opera con OleDb System.Data.Common; System.Data.Sql; System.Data.SqlClient; //--- para bases de datos sql server

Cuales son los objetos?


Objetos de Proveedores Propsito de Datos .NET Connection Provee conectividad a un Origen de Datos Provee acceso a comandos de Base de Datos como: Select, Delete, Command Insert y Update DataReader Provee acceso a datos de solo lectura DataAdapter Utiliza el objeto Connection para enlazar un objeto DataSet con un Proveedor de Datos. Tambin permite actualizar los Datos en el origen a partir de las modificaciones hechas en el DataSet.

Es la principal forma de guardar datos cuando usted utiliza ADO.NET

Un DataSet guarda informacin en un entorno desconectado. Despus de que usted establece una conexin con una Base de Datos entonces puede acceder a sus datos.
El DataSet le permite a usted guardar datos que se obtuvieron de un origen de datos. Los datos en un DataSet pueden ser manipulados sin necesidad que el formulario Web mantenga la conexin con el origen de datos. La conexin se reestablece recin cuando usted necesita actualizar los cambios El DataSet guarda la informacin en uno o ms objetos de tipo DataTables. Cada DataTable puede ser poblada con datos de un nico origen. Usted puede tambin establecer relaciones entre 2 objetos DataTables usando un objeto de tipo DataRelation

DataSet

DataTable DataColumn

DataTable

DataRow

Relations XML Schema


Constraints

DbConnection DbDataReader DbProviderFactories DbParameterCollection

DbTransaction DbException DbCommandBuilder DbDataAdapter

DbParameter DbProviderFactory DbCommand

SqlConnection SqlDataReader SqlParameter SqlParameterCollection

SqlTransaction SqlException SqlCommandBuilder SqlDataAdapter

SqlPersonalizationProvider SqlError SqlCommand

Para este fin utilizaremos System.Data.Odbc, de hecho es el mismo esquema para OleDb, SqlClient, Npgsql, etc.
try { OdbcConnection conX = new OdbcConnection("DSN=practica2007"); conX.Open(); OdbcDataAdapter adpX = new OdbcDataAdapter("SELECT * FROM pedidos", conX); DataSet datX = new DataSet(); adpX.Fill(datX, "resultado"); grdRes.DataSource = datX; grdRes.DataMember = "resultado"; grdRes.DataBind(); //--- pasar los datos del dataset al gridview } finally { conX.Close(); }

OdbcConnection conX = new OdbcConnection("DSN=practica2007"); conX.Open();

conX

DataSet (datX)

adpX

Base de Datos

Servidor
grdRes DataTable

resultado

OdbcDataAdapter adpX = new OdbcDataAdapter("SELECT * FROM pedidos", conX); DataSet datX = new DataSet();

adpX.Fill(datX, "resultado");
grdRes.DataSource = datX; grdRes.DataMember = "resultado"; grdRes.DataBind(); //--- pasar los datos del dataset al gridview 010101 conX.Close();

01001110 01001 01010

OLEDB

ODBC Aplicacin

Base de Datos X

COMMON

Se puede utilizar cualquiera de estos objetos para tener acceso a una base de datos, algunos fabricantes de BD distribuyen drivers especficos para su BD, lo cual en teora es mucho mas rpido, dado que no tiene que pasar por un traductor adicional como el Odbc u OleDb

using System.Data.OleDb; //--- Agregar esta lnea en la seccin de using protected void Page_Load(object sender, EventArgs e) { OleDbConnection conVideo; conVideo = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data source=d:\\video.mdb"); try { conVideo.Open(); OleDbDataAdapter adpX = new OleDbDataAdapter("SELECT * FROM pelicula", conVideo); DataSet datX = new DataSet(); //--- Llenar el DataSet adpX.Fill(datX, "peliculas"); //--- peliculas es el nuevo nombre que se le pone dentro del DataSet, puede ser dif. De la BD //--- Enlazar el DataSet con un gridview grdRes.DataSource = datX; //--- Indicar en que tabla se sibstraen los datos grdRes.DataMember = "peliculas"; //--- Cargar los datos del DataSet al GridView grdRes.DataBind(); } catch (OleDbException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin del evento Load

1. a) b) c) d) e) f) g)

Configurar el ODBC (conectividad de base de datos abierta) Seleccione panel de control Elija herramientas administrativas Seleccione Orgenes de datos ODBC Elija la ficha DSN del sistema Elija el botn agregar Seleccione el Driver PostgreSQL ANSI Elija finalizarC

e) Configura los datos como se muestra en la siguiente figura: Data Source: Es el nombre por el cual se va a referenciar desde la aplicacin Database: Es el nombre fsico de la base de datos hecho en postgreSql Server: Ah se debe indicar el nombre del servidor de base de datos, en este caso se tiene en la misma mquina por eso lo dejamos como localhost Port: Es el nmero de puerto por el cual el servidor de PostgreSql est escuchando las peticiones User Name: Nombre del usuario autorizado de la BD Password: Contrasea de l usuario SSL Mode: Socket Security Layer (Modo de la capa de seguridad f) Elija Save o guardar

2. Establecer la conexin desde la aplicacin using System.Data.Odbc; protected void Page_Load(object sender, EventArgs e) { OdbcConnection conVideo = new OdbcConnection("DSN=video"); try { conVideo.Open(); OdbcDataAdapter adpX = new OdbcDataAdapter("SELECT * FROM pelicula", conVideo); DataSet datX = new DataSet(); //--- Llenar el DataSet adpX.Fill(datX, "peliculas"); //--- Enlazar el DataSet con el gridview grdRes.DataSource = datX; //--- Indicar sobre que objeto se ha de susbstraer los datos grdRes.DataMember = "peliculas"; grdRes.DataBind(); //--- Llenar el gridview } catch (OdbcException ex) //--- ocurri algn error { lblMensaje.Text = ex.Message; } finally //--- de cualquier forma { conVideo.Close(); //--- Cerrar } } //--- fin de load

1. Instale PostgreSql, manual disponible en www.postgres.org 2. Crea su base de datos 3. Ejecute Visual Studio o Visual Web developer 4. Selecciona men Sitio Web 5. Elija submenu Agregar referencia 6. Elija la ficha examinar 7. Seleccione los dos archivos: Mono.Security.dll y Npgsql.dll 8. Confirme con aceptar 9. Agregue en la seccin de using: using Npgsql; using NpgsqlTypes;

protected void Page_Load(object sender, EventArgs e) { NpgsqlConnection conVideo = new NpgsqlConnection("server=localhost; port=5432;User id=octavo; password=octavo; database=video;"); try { conVideo.Open(); NpgsqlDataAdapter adpX = new NpgsqlDataAdapter("SELECT * FROM pelicula", conVideo); DataSet datX = new DataSet(); //--- Llenar el DataSet, al resultado nombrarlo como peliculas adpX.Fill(datX, "peliculas"); //--- Enlazar DataSet con GridView grdRes.DataSource = datX; //--- indicar de donde se substraen los datos grdRes.DataMember = "peliculas"; grdRes.DataBind(); //--- Pasar los datos del DataSet al gridview } catch (NpgsqlException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); //--- cerrar la BD } } //--- fin de Load

1. Vamos a hacerlo desde el principio: Si no ha ejecutado Visual Studio o Visual Web Developer inicilo 2. En el explorador de soluciones elija agregar un nuevo elemento Elija Base de datos SQL y confirme con Aceptar 3. Elija la seccin de tablas y con el botn derecho agregar nueva tabla Para convertir un campo como llave primaria seleccione la fila y con el botn derecho elija llave primaria, para que se valor se incremente de forma automtica en la parte inferior derecha, elija identidad y cambie su valor a Si con incremento de 1 en 1 4. Guarde la tabla como pelicula y agregue algunos datos

1. Agregue un nuevo formulario con el nombre BDSqlServer 2. Agregue un control GridView con el nombre grdRes y una etiqueta con el nombre lblMensaje y agregue el siguiente cdigo
using System.Data.SqlClient; protected void Page_Load(object sender, EventArgs e) { SqlConnection conVideo = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\video.mdf;Integrated Security=True;User Instance=True"); try { conVideo.Open(); SqlDataAdapter adpX = new SqlDataAdapter("SELECT * FROM pelicula", conVideo); DataSet datX = new DataSet(); adpX.Fill(datX, "peliculas"); grdRes.DataSource = datX; grdRes.DataMember = "peliculas"; grdRes.DataBind(); } catch (SqlException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de Page_Load

Para todos los ejemplos de inserciones se asume que se tienen los siguientes controles: txtTitulo, txtGenero, txtClasificacion El campo idPelicula es de tipo autoincremental, as que no se le transferir algn valor

private void Guardar() { NpgsqlConnection conVideo = new NpgsqlConnection("server=localhost; port=5432;" + "User id=practicante; password=practica2007; database=practica;"); try { conVideo.Open(); NpgsqlCommand comX = new NpgsqlCommand("INSERT INTO pelicula(titulo,genero,clasificacion)" + "VALUES(:prmTitulo,:prmGenero,:prmClasifica);", conVideo); //--- Agregar parmetros a la coleccin comX.Parameters.Add("prmTitulo", NpgsqlDbType.Varchar , 50); comX.Parameters.Add("prmGenero", NpgsqlDbType.Varchar, 50); comX.Parameters.Add("prmClasifica", NpgsqlDbType.Varchar, 5); //--- asignar valores a los parametros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.Parameters["prmGenero"].Value = txtGenero.Text; comX.Parameters["prmClasifica"].Value = txtClasificacion.Text; comX.ExecuteNonQuery(); //--- realiza la insercin } catch (NpgsqlException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de guardar

private void Guardar() { SqlConnection conVideo = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\video.mdf;" + "Integrated Security=True;User Instance=True"); try { conVideo.Open(); SqlCommand comX = new SqlCommand ("INSERT INTO pelicula(titulo,genero,clasificacion)" + "VALUES(@prmTitulo,@prmGenero,@prmClasifica);", conVideo); //--- Agregar parametros a la coleccin comX.Parameters.Add("prmTitulo",SqlDbType.VarChar , 50); comX.Parameters.Add("prmGenero", SqlDbType.VarChar, 50); comX.Parameters.Add("prmClasifica", SqlDbType.VarChar, 5); //--- asignar valores a los parametros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.Parameters["prmGenero"].Value = txtGenero.Text; comX.Parameters["prmClasifica"].Value = txtClasificacion.Text; comX.ExecuteNonQuery(); //--- realiza la insercin } catch (SqlException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de guardar

private void Guardar() { OleDbConnection conVideo = new OleDbConnection(Provider=Microsoft.Jet.OleDb.4.0; " + "Data Source = D:\\video.mdb"); //--- Access 2007 => Microsoft.Jet.ACE.12.0; D:\\video.accdb try { conVideo.Open(); OleDbCommand comX = new OleDbCommand("INSERT INTO pelicula(titulo,genero,clasificacion)" + "VALUES(@prmTitulo,@prmGenero,@prmClasifica);", conVideo); //--- Agregar parametros a la coleccin comX.Parameters.Add("prmTitulo", OleDbType.VarChar , 50); comX.Parameters.Add("prmGenero", OleDbType.VarChar, 50); comX.Parameters.Add("prmClasifica", OleDbType.VarChar, 5); //--- asignar valores a los parametros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.Parameters["prmGenero"].Value = txtGenero.Text; comX.Parameters["prmClasifica"].Value = txtClasificacion.Text; comX.ExecuteNonQuery(); //--- realiza la insercin } catch (OleDbException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de guardar

Para todos los ejemplos de actaulizaciones se asume que se tienen los siguientes campos en la tabla pelicula: Titulo, Genero, Clasificacion ** Cambiar de gnero a un ttulo en especfico. Se pide el ttulo y el nuevo gnero **

private void Actualizar() { NpgsqlConnection conVideo = new NpgsqlConnection("server=localhost; port=5432;" + "User id=practicante; password=practica2007; database=practica;"); try { conVideo.Open(); //--- unicamente cambiar de gnero a un ttulo en especfico NpgsqlCommand comX = new NpgsqlCommand("UPDATE pelicula SET genero=:prmGenero " + "WHERE titulo=:prmTitulo;", conVideo); //--- Agregar parametros a la coleccin comX.Parameters.Add("prmTitulo", NpgsqlDbType.Varchar, 50); comX.Parameters.Add("prmGenero", NpgsqlDbType.Varchar, 50); //--- asignar valores a los parametros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.Parameters["prmGenero"].Value = txtGenero.Text; comX.ExecuteNonQuery(); //--- realiza la Actualizacin } catch (NpgsqlException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de actualizar

private void Actualizar() { SqlConnection conVideo = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\video.mdf;Integrated Security=True;User Instance=True"); try { conVideo.Open(); //--- unicamente cambiar de gnero a un ttulo en especfico SqlCommand comX = new SqlCommand("UPDATE pelicula SET genero=@prmGenero " + "WHERE titulo=@prmTitulo;", conVideo); //--- Agregar parametros a la coleccin comX.Parameters.Add("prmTitulo",SqlDbType.VarChar , 50); comX.Parameters.Add("prmGenero", SqlDbType.VarChar, 50); //--- asignar valores a los parametros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.Parameters["prmGenero"].Value = txtGenero.Text; comX.ExecuteNonQuery(); //--- realiza la Actualizacin } catch (SqlException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de actualizar

private void Actualizar() { conVideo = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data source=d:\\video.mdb"); try { conVideo.Open(); //--- unicamente cambiar de gnero a un ttulo en especfico OleDbCommand comX = new OleDbCommand("UPDATE pelicula SET genero=@prmGenero " + "WHERE titulo=@prmTitulo;", conVideo); //--- Agregar parametros a la coleccin comX.Parameters.Add("prmTitulo",OleDbType.VarChar , 50); comX.Parameters.Add("prmGenero", OleDbType.VarChar, 50); //--- asignar valores a los parametros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.Parameters["prmGenero"].Value = txtGenero.Text; comX.ExecuteNonQuery(); //--- realiza la Actualizacin } catch (OleDbException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de actualizar

private void Eliminar() { NpgsqlConnection conVideo = new NpgsqlConnection("server=localhost; port=5432;" + "User id=practicante; password=practica2007; database=practica;"); try { conVideo.Open(); //--- Eliminar pelcula indicando el ttulo en una caja de texto NpgsqlCommand comX = new NpgsqlCommand(DELETE FROM pelicula + "WHERE titulo=:prmTitulo;", conVideo); //--- Agregar parmetros a la coleccin comX.Parameters.Add("prmTitulo", NpgsqlDbType.Varchar, 50); //--- asignar valores a los parmetros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.ExecuteNonQuery(); //--- realiza la eliminacin } catch (NpgsqlException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de eliminacin

private void Eliminar() { SqlConnection conVideo = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\video.mdf;Integrated Security=True;User Instance=True"); try { conVideo.Open(); //--- Eliminar pelcula indicando el ttulo en una caja de texto SqlCommand comX = new SqlCommand(DELETE FROM pelicula " + "WHERE titulo=@prmTitulo;", conVideo); //--- Agregar parmetros a la coleccin comX.Parameters.Add("prmTitulo",SqlDbType.VarChar , 50); //--- asignar valores a los parmetros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.ExecuteNonQuery(); //--- realiza la eliminacin } catch (SqlException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de eliminacin

private void Eliminar() { conVideo = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data source=d:\\video.mdb"); try { conVideo.Open(); //--- Eliminar pelcula indicando el ttulo en una caja de texto OleDbCommand comX = new OleDbCommand(DELETE FROM pelicula " + "WHERE titulo=@prmTitulo;", conVideo); //--- Agregar parmetros a la coleccin comX.Parameters.Add("prmTitulo",OleDbType.VarChar , 50); //--- asignar valores a los parmetros comX.Parameters["prmTitulo"].Value = txtTitulo.Text; comX.ExecuteNonQuery(); //--- realiza la eliminacin } catch (OleDbException ex) { lblMensaje.Text = ex.Message; } finally { conVideo.Close(); } } //--- fin de eliminacin

Вам также может понравиться