Vous êtes sur la page 1sur 51

Bases de datos

Cualquier aplicacin de inters requiere el almacenamiento y posterior recuperacin


de los datos con los que trabaje (pedidos en aplicaciones de comercio electrnico,
datos de personal para las aplicaciones de recursos humanos, datos de clientes en
sistemas CRM, etc.). Los sistemas de gestin de bases de datos (DBMSs) nos
permiten almacenar, visualizar y modificar datos, as como hacer copias de
seguridad y mantener la integridad de los datos, proporcionando una serie de
funciones que facilitan el desarrollo de nuevas aplicaciones.
Desde un punto de vista intuitivo, una base de datos no es ms que un fondo
comn de informacin almacenada en una computadora para que cualquier persona
o programa autorizado pueda acceder a ella, independientemente de su lugar de
procedencia y del uso que haga de ella. Algo ms formalemente, una base de datos
es un conjunto de datos comunes a un "proyecto" que se almacenan sin
redundancia para ser tiles en diferentes aplicaciones.
El Sistema de Gestin de Bases de Datos (DBMS) es el software con capacidad para
definir, mantener y utilizar una base de datos. Un sistema de gestin de bases de
datos debe permitir definir estructuras de almacenamiento, as como acceder a los
datos de forma eficiente y segura. Ejemplos: Oracle, IBM DB2, Microsoft SQL
Server, Interbase...
En una base de datos, los datos se organizan independientemente de las
aplicaciones que los vayan a usar (independencia lgica) y de los ficheros en los
que vayan a almacenarse (independencia fsica). Adems, los datos deben ser
accesibles a los usuarios de la manera ms amigable posible, generalmente
mediante lenguajes de consulta como SQL o Query-by-example. Por otro lado, es
esencial que no exista redundancia (esto es, los datos no deben estar duplicados)
para evitar problemas de consistencia e integridad.

Bases de datos relacionales

Tabla o relacin: Coleccin de registros acerca de entidades de un tipo


especfico (p.ej. alumnos).
Atributo, campo o columna: Propiedad asociada a una entidad (p.ej.
nombre, apellidos...). Cada atributo tiene un tipo asociado (p.ej. entero,
cadena de caracteres...) y puede tomar el valor nulo (null).
Tupla, registro o fila: Datos relativos a un objeto distinguible de otros (p.ej.
un alumno concreto).
Se pueden estrablecer relaciones entre las tablas de una base de datos relacional
mediante el uso de claves primarias y claves externas (p.ej. cada libro tiene, al
menos, un autor).

Clave primaria: Conjunto de atributos que nos permiten identificar


unvocamente a una entidad dentro de un conjunto de entidades (p.ej. nmero
de matrcula). La clave primaria garantiza la unicidad de una tupla, pues no se
permite la existencia de varios registros que compartan su clave primaria.
Clave externa: Conjunto de atributos que hacen referencia a otra tabla, lo
que nos permite establecer relaciones lgicas entre distintas tablas. Los
valores de los atributos de la clave externa han de coincidir con los valores de
los atributos de una clave (usualmente la primaria) en una de las tuplas de la
tabla a la que se hace referencia (integridad referencial).

SQL
Lenguaje estndar para acceder a una base de datos relacional, estandarizado por
el American National Standards Institute (ANSI): SQL-92. En gran parte, los
distintos DBMS utilizan todos el mismo SQL, si bien cada vendedor le ha aadido
sus propias extensiones. El lenguaje SQL se divide en:

DDL (Data Definition Language), utilizado para crear y modificar la estructura


de la base de datos (p.ej. CREATE TABLE).
DML (Data Manipulation Language), empleado para manipular los datos
almacenados en la base de datos (p.ej. consultas con la sentencia SELECT).
DCL (Data Control Language), para establecer permisos de acceso (GRANT,
REVOKE, DENY) y gestionar transacciones (COMMIT y ROLLBACK).

Interfaces de acceso a bases de datos


Evolucin histrica de los "estndares" propuestos por Microsoft:

ODBC (Open Database Connectivity): API estndar ampliamente utilizado,


disponible para mltiples DBMSs, utiliza SQL para acceder a los datos.
DAO (Data Access Objects): Interfaz para programar con bases de datos
JET/ISAM, utiliza automatizacin OLE y ActiveX.
RDO (Remote Data Objects): Fuertemente acoplado a ODBC, orientado al
desarrollo de aplicaciones cliente/servidor.
OLE DB: Construido sobre COM, permite acceder a bases de datos tanto
relacionales como no relacionales (no est restringido a SQL). Se puede
emplear con controladores ODBC y proporciona un interfaz a bajo nivel en
C++.
ADO (ActiveX Data Objects): Ofrece un interfaz orientado a objetos y
proporciona un modelo de programacin para OLE DB accesible desde
lenguajes distintos a C++ (p.ej. Visual Basic).

ADO se dise para su uso en arquitecturas cliente/servidor con bases de datos


relacionales (no jerrquicas, como es el caso de XML). Su diseo no est
demasiado bien factorizado (ya que existen muchas formas de hacer las cosas y
algunos objetos acaparan demasiadas funciones) y ADO no estaba pensado para
arquitecturas multicapa en entornos distribuidos.
ADO .NET es una coleccin de clases, interfaces, estructuras y tipos enumerados
que permiten acceder a los datos almacenados en una base de datos desde la
plataforma .NET. Si bien se puede considerar una versin mejorada de ADO, no
comparte con ste su jerarqua de clases (aunque s su funcionalidad).
ADO .NET combina las capas ADO y OLE DB en una nica capa de proveedores
(managed providers). Cada proveedor contiene un conjunto de clases que
implementan interfaces comunes para permitir el acceso uniforme a distintas
fuentes de datos. Ejemplos: ADO Managed Provider (da acceso a cualquier fuente
de datos OLE DB), SQL Server Managed Provider (especfico para el DBMS de
Microsoft), Exchange Managed Provider (datos almacenados con Microsoft
Exchange)...

ADO .NET usa XML. De hecho, los conjuntos de datos se almacenan internamente
en XML, en vez de almacenarse en binario como suceda en ADO. Al estar los datos
almacenados en XML, se simplifica el acceso a los datos a travs de HTTP (algo que
ocasiona problemas en ADO si los datos tienen que pasar cortafuegos). Por otro
lado, se simplifica la comunicacin entre aplicaciones al ser XML un formato
estndar (p.ej. comunicacin con applets Java).
Con ADO .NET se puede acceder a los datos de dos formas distintas:

Acceso conectado: Acceso slo de lectura con cursores unidireccionales


("firehose cursors"). La aplicacin realiza una consulta y lee los datos conforme
los va procesando con la ayuda de un objeto DataReader.
Acceso desconectado: La aplicacin ejecuta la consulta y almacena los
resultados de la misma para procesarlos despus accediendo a un objeto de
tipo DataSet. De esta forma, se minimiza el tiempo que permanece abierta la
conexin con la base de datos.
Al proporcionar conjuntos de datos de forma desconectada, se utilizan mejor los
recursos de los servidores y se pueden construir sisyemas ms escalables que con
ADO (que mantena abierta la conexin con la base de datos la mayor parte del
tiempo). Este enfoque resulta ms adecuado en sistemas distribuidos como
Internet.

Arquitectura ADO.NET
El funcionamiento de ADO.NET se basa esencialmente en utilizar los siguientes
componentes:

Data Provider (proveedor de datos): Proporciona un acceso uniforme a


conjuntos de datos (bases de datos relacionales o informacin ID3 de ficheros
MP3). Su papel el similar al de un controlador ODBC o JDBC.
DataSet: El componente ms importante, puede almacenar datos
provenientes de mltiples consultas (esto es, mltiples tablas).
DataAdapter: Sirve de enlace entre el contenedor de conjuntos de datos
(DataSet) y la base de datos (Data Provider).

Los componentes anteriores se completan con DataReader (para realizae


eficientemente lecturas de grandes cantidades de datos que no caben en
memoria), DataRelation (la forma de establecer una reunin entre dos
tablas), Connection (utilizada por DataAdapter para conectarse a la base de datos)
y Command(que permite especificar las rdenes, generalmente en SQL, que nos
permiten consultar y modificar el contenido de la base de datos: select, insert,
delete y update).
Un proveedor de datos debe proporcionar una implementacin de Connection,
Command, DataAdapter y DataReader.
El modo de funcionamiento tpico de ADO.NET es el siguiente:

Se crean un objeto Connection especificando la cadena de conexin.


Se crea un DataAdapter.
Se crea un objeto Command asociado al DataAdapter, con la conexin
adecuada y la sentencia SQL que haya de ejecutarse.
Se crea un DataSet donde almacenar los datos.
Se abre la conexin.
Se rellena el DataSet con datos a travs del DataAdapter.
Se cierra la conexin.
Se trabaja con los datos almacenados en el DataSet.
Como los conjuntos de datos se almacenan en memoria y trabaja con ellos de
forma desconectada, cuando hagamos cambios sobre ellos (inserciones, borrados o
actualizaciones) debemos actualizar el contenido de la base de datos llamando al
mtodo Update del DataAdapter y, posteriormente, confirmar los cambios
realizados en el DataSet (con AcceptChanges) o deshacerlos (con RejectChanges).

Clases ADO.NET
ADO .NET define una serie de interfaces que proporcionan la funcionalidad bsica
comn a las distintas fuentes de datos accesibles a travs de ADO .NET. La
implementacin de estos interfaces por parte de cada proveedor proporciona
acceso a un tipo concreto de fuentes de datos y puede incluir propiedades y
mtodos adicionales.

Interfaz IDbConnection
Establece una sesin con una fuente de datos. Permite abrir y cerrar conexiones,
as
como
comenzar
transacciones
(que
se
finalizan
con
los
mtodos Commit y Rollback de IDbTransaction.
Las
clasesSqlDbConnection y OleDbConnection implementan
el
interfaz
de IDbConnection.

Interfaz IDbCommand
Representa una sentencia que se enva a una fuente de datos (usualmente en SQL,
aunque
no
necesariemente).
Las
clases SqlDbCommand y OleDbCommand implementan el interfaz de IDbCommand.

IDbCommand nos permite definir la sentencia que se ha de ejecutar, ejecutar la


sentencia, pasarle parmetros y prepararla (crear una versin "compilada" de la
misma para que su ejecucin sea ms eficiente cuando ha de repetirse varias

veces). El mtodo ExecuteReader devuelve un conjunto de tuplas (vase el


interfaz IDataReader), mientras que ExecuteScalar devuelve un valor nico
(p.ej. ejecucin de procedimientos almacenados) y ExecuteNonQuery no devuelve
nada (p.ej. borrados y actualizaciones).

string connectionString = "Persist Security


Info=False;" +
"User ID=sa;Initial
Catalog=MYDB;" +
"Data Source=MYSERVER";
SqlConnection connection = new
SqlConnection(connectionString);
// Ejecucin de sentencias SQL
// --------------------------string sqlInsert = "INSERT INTO
Department(DepartmentName) VALUES
(@DepartmentName)";
SqlCommand insertCommand = new SqlCommand(sqlInsert,
connection);
SqlParameter

param = insertCommand.Parameters.Add (
new
SqlParameter("@DepartmentName", SqlDbType.VarChar,
100));
param.Value = ...
connection.Open();
insertCommand.ExecuteNonQuery();
connection.Close();
// Llamadas a procedimientos almacenados
// ------------------------------------// C#
string spName = "CREATE_DEPARTMENT"
SqlCommand command = new SqlCommand(spName,
connection);
command.CommandType = CommandType.StoredProcedure;
SqlParameter in = command.Parameters.Add (
new
SqlParameter("@DepartmentName", SqlDbType.VarChar,
100));
in.Value = ...
SqlParameter out = command.Parameters.Add (

new SqlParameter("RETVAL",
SqlDbType.Int));
out.Direction = ParameterDirection.ReturnValue;
connection.Open();
insertCommand.ExecuteNonQuery();
int newID = command.Parameters("RETVAL").Value;
connection.Close();

// SQL Server
// ---------CREATE TABLE [dbo].[Department] (
[DepartmentID] [int] IDENTITY (1, 1) NOT NULL
,
[DepartmentName] [varchar] (100),
[CreationDate] [datetime] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Department] WITH NOCHECK ADD
CONSTRAINT [PK_Department] PRIMARY KEY
CLUSTERED
(
[DepartmentID]
) ON [PRIMARY]
GO
CREATE PROCEDURE dbo.CreateDepartment
@DepartmentName varchar(100),
AS
INSERT INTO Department (DepartmentName,
CreationDate)
VALUES (@DepartmentName, GetDate())
RETURN scope_identity()
GO

Interfaz IDataReader
Proporciona acceso secuencial de slo lectura a una fuente de datos. Las
clases SqlDataReader yOleDbDataReader implementan
el
interfaz
de IDataReader. Al utilizar un objeto IDataReader, las operaciones sobre la
conexin IDbConnection quedan deshabilitadas hasta que se cierre el
objetoIDataReader.

string connectionString = "Provider=SQLOLEDB.1;" +


"User ID=sa;Initial
Catalog=Northwind;" +
"Data Source=MYSERVER";

OleDbConnection connection = new


OleDbConnection(connectionString);
string sqlQuery = "SELECT CompanyName FROM
Customers";
OleDbCommand myCommand = new OleDbCommand(sqlQuery,
connection);
connection.Open();
OleDbDataReader myReader =
myCommand.ExecuteReader();
while (myReader.Read()) {
Console.WriteLine(myReader.GetString(0));
}
myReader.Close();
connection.Close();

Clase DataSet
Un objeto DataSet encapsula un conjunto de tablas independientemente de su
procedencia y mantiene las relaciones existentes entre las tablas. El contenido de
un DataSet puede serializarse en formato XML. Adems, se permite la
modificacin dinmica de los datos y metadatos del conjunto de datos representado
por el objeto DataSet.
El
interfaz IDataAdapter implementado OleDbDataAdapter y SqlDataAdapter se
utiliza para construir el conjunto de datos y actualizarlo cuando sea necesario. Los
conjuntos de datos con los que se trabaja de esta forma utilizan un enfoque
asncrono en el que no se mantiene abierta la conexin con la base de datos a la
que se est accediendo. Al trabajar con conjuntos de datos de esta forma, se
dispone de un superconjunto de los comandos que se permiten cuando se emplea
el interfaz IDataReader. De hecho se pueden realizar operaciones de consulta
(select), insercin (insert), actualizacin (update) y borrado (delete).

string connectionString = "Persist Security


Info=False;" +
"User ID=sa;Initial
Catalog=Northwind;" +
"Data Source=MYSERVER";
SqlConnection connection = new
SqlConnection(connectionString);
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
DataSet myDataSet = new DataSet();

string sqlQuery = "SELECT * FROM Customers";


myDataAdapter.SelectCommand = new
SqlCommand(sqlQuery, connection);
connection.Open();
myDataAdapter.Fill(myDataSet);
conn.Close();

Clase DataTable
Representa una tabla en memoria (Columns & Rows) cuyo esquema viene definido
por su coleccin de columnas Columns. La integridad de los datos se conserva
gracias a objetos que representan restricciones ( Constraint) y dispone de
eventos pblicos que se producen al realizar operaciones sobre la tabla (p.ej.
modificacin o eliminacin de filas).
Clase DataColumn
Define el tipo de una columna de una tabla (va su propiedad DataType) e incluye
las restricciones (Constraints) y las relaciones (Relations) que afectan a la
columna.
Adems,
posee
propiedades
tiles
como AllowNull, Unique o ReadOnly.
Clase DataRow
Representa los datos de una tabla (almacenados en la coleccin Rows de un
objeto DataTable), de acuerdo con el esquema definido por las columnas de la
tabla (Columns). Adems, incluye propiedades para determinar el estado de una
fila/tupla particular (p.ej. nuevo, cambiado, borrado, etc.).
Clase DataRelation

Relaciona dos DataTables va DataColumns y sirve para mantener restricciones


de integridad referencial. Obviamente, el tipo de las columnas relacionadas ha de
ser idntico. Para acceder a los datos relacionados con un registro concreto basta
con emplear el mtodo GetChildRecords de la tupla correspondiente (DataRow).
Creacin de una base de datos
// Creacin de las tablas, columnas y claves
primarias/externas
DataTable authors = new DataTable("Author");
DataTable books = new DataTable("Book");
DataColumn id = authors.Columns.Add("ID",
typeof(Int32));
DataColumn name = new
authors.Columns.Add("Name",typeof(String));
authors.PrimaryKey = new DataColumn[] {id};
id.AutoIncrement = true;
DataColumn isbn = books.Columns.Add("ISBN",
typeof(String));
DataColumn title = books.Columns.Add("Title",
typeof(String));
DataColumn authid =
books.Columns.Add(AuthID,typeof(Int32));
books.PrimaryKey = new DataColumn[] {isbn};
DataColumn[] foreignkey = new DataColumn[] {authid};
DataRelation bookauth = new
DataRelation("BookAuthors",
authors.PrimaryKey,
foreignkey);
// Creacin del DataSet: tablas y relaciones
DataSet dataset = new DataSet();
dataset.DataSetName = "BookAuthors";
dataset.Tables.Add (authors);
dataset.Tables.Add (books);
dataset.Relations.Add (bookauth);
// Insercin de datos
DataRow shkspr = authors.NewRow();
shkspr["Name"] = "William Shakespeare";
authors.Rows.Add(shkspr);
DataRow row = books.NewRow();
row["AuthID"] = shkspr["ID"];
row["ISBN"] = "1000-XYZ";
row["Title"] = "MacBeth";
books.Rows.Add(row);
// Commit
dataset.AcceptChanges();

Transacciones en ADO.NET
Las transacciones son conjuntos de operaciones que han de efectuarse de forma
atmica. La acidez de una transaccin hace referencia a sus propiedades deseables:
atomicidad, consistencia, aislamiento y durabilidad (ACID = Atomicity, Consistency,
Isolation, Durability).
En ADO.NET, los lmites de las transacciones se indican manualmente. Los objetos
de la clase Connectiontienen un mtodo BeginTransaction que devuelve una
transaccin (objeto de tipo Transaction). La transaccin finaliza cuando se llama
al
mtodo Commit o Rollback del
objeto Transaction devuelto
porBeginTransaction.

Data Binding
ste es el nombre por el que se conoce el mecanismo que nos permite asociar el
contenido de un conjunto de datos a los controles de la interfaz de nuestra
aplicacin, algo que facilitan los entornos de programacin visual (como es el caso
del Visual Studio .NET).
Data Binding en Visual Studio .NET
Se puede optar por asistentes del tipo de DataForm wizard... o, cuando stos
no nos ofrecen la funcionalidad suficiente para nuestras aplicaciones, podemos
programarlo nosotros mismos (algo que no es difcil y nos da bastante ms
control sobre nuestra aplicacin):

Se crean los objetos ADO.NET necesarios (Connection, DataSet,


Command y DataAdapter).
Se enlazan los controles de la interfaz con las columnas del DataSet, lo
que
se
consigue
aadiendo
un
objetoSystem.Windows.Forms.Binding a
la
propiedadDataBindings del
control.
Los
objetos
de
tipoBinding nos permiten enlazar una propiedad de un control a una
columna de un DataSet.
Se implementa la forma de recorrer los registros, haciendo uso del
objeto BindingContext asociado
al
formulario
(cuyas
propiedades Position y Count nos permiten movernos por el
conjunto de datos).
Se implementan las operaciones sobre la base de datos (con los
comandos asociados al DataAdapter.

NOTA: Cuando los conjuntos de datos sean grandes, es recomendable utilizar


ADO.NET con paginacin para no tener que leer todos los datos de la base de datos
(vase "ADO.NET data paging"). En situaciones como sa, tambin suele ser
recomendable aadir capacidades de bsqueda a nuestras aplicaciones (vase el
mtodo Find).

2En

un documento en Word realice un informe acadmico con las


caractersticas principales de la datatablecollection. Enva tu
archivo a travs de este medio.

DataTableCollection: Una coleccin de DataTables. Cada tala tiene sus


columnas ( DataColumnCollection), filas ( DataRowColletion ), restricciones (
Constraints ). Es de sealar algo muy importante que ocurre con las DataRow, que
almacenan el estado original y actual de modo que puede detectar cambios en los
valores almacenados.

Dataset
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.
Practicamente un DataSet viene a ser una cach de memoria interna de datos recuperados de un origen
de datos, representa un componente fundamental de la arquitectura de ADO.NET. As mismo un DataSet
est compuesto por una coleccin de objetos DataTable que se pueden relacionar entre ellos mediante
objetos DataRelation. Tambin se puede imponer la integridad de los datos de DataSet mediante los
objetos UniqueConstraint y ForeignKeyConstraint.
El Dataset est formado por uno o ms objetos de tipo DataTables. fue pensado para acceder a datos
independientemente del origen. Por ejemplo, un DataSet puede obtener datos de SQL Server, Oracle o de
un archivo XML. Puede utilizar un objeto llamada DataView para ver los datos de distintas maneras.
Mientras que los objetos DataTable contienen los datos, DataRelationCollection permite desplazarse por la
jerarqua de la tabla. Las tablas estn incluidas en un DataTableCollection al que se obtiene acceso a
travs de la propiedad Tables. Al obtener acceso a los objetos DataTable, hay que tener en cuenta que
stos distinguen entre maysculas y minsculas condicionalmente. Por ejemplo, si un objeto DataTable se
denomina "mydatatable" y otro "Mydatatable", se considerar que una cadena utilizada para buscar una
de las tablas distingue entre maysculas y minsculas. Sin embargo, si existe "mydatatable" pero no
existe "Mydatatable", se considerar que la cadena de bsqueda no distingue entre maysculas y
minsculas. Para mejor comprensin de la importancia del DataSet, vea el artculo Mejorando el
rendimiento de la aplicacin trabajando en modo desconectado en la cual se detalla de forma clara
mediante un ejemplo cmo se obtiene beneficios usando el DataSet.
Un DataSet puede leer y escribir datos y esquemas como documentos XML. Los datos y esquemas pueden
transportarse, a continuacin, a travs de HTTP y cualquier aplicacin puede utilizarlos en cualquier
plataforma que sea compatible con XML. Los esquemas se pueden guardar como esquemas XML mediante
el mtodo WriteXmlSchema, y tanto los esquemas como los datos se pueden guardar mediante el mtodo
WriteXml. Hay que utilizar el mtodo ReadXml para leer un documento XML que incluya esquema y datos.
El DataSet es la principal forma de guardar datos cuando usted utiliza ADO.NET 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.
Hay tpicamente 3 pasos para acceder a los datos.
1. Acceder al Origen de Datos y mostrar los datos en el formulario Web
2. Manipular los Datos
3. Retornar los datos para actualizar la base de datos
Muchos de ustedes amigos lectores deben estar preguntando: y los mtodos? y las propiedades? del
DataSet, para buena suerte anteriormente publiqu un artculo sobre el uso del Dataset y el
DataAdapter donde explico muchas de las propiedades y mtodos del DataSet, as que visita este
artculo.
Puede hacer click aqu para ver un apndice sobre ActiveX Data Object, donde se detalla muchos de las
propiedades, mtodos y eventos.

DataTableCollection (Clase)
.NET Framework 4.5
Otras versiones

Personas que lo han encontrado til: 0 de 1 - Valorar este tema

Representa la coleccin de tablas para el DataSet.

Jerarqua de herencia
System.Object
System.Data.InternalDataCollectionBase
System.Data.DataTableCollection
Espacio de nombres: System.Data
Ensamblado: System.Data (en System.Data.dll)

Sintaxis
C#
C++
F#
VB
[ListBindableAttribute(false)]
public sealed class DataTableCollection : InternalDataCollectionBase
El tipo DataTableCollection expone los siguientes miembros.

Propiedades
Mostrar:

Heredado

Protegido

Nombre

Descripcin

Count

Obtiene el nmero total de elementos de una coleccin. (Se hereda

deInternalDataCollectionBase).

IsReadOnly

Obtiene un valor que indica si InternalDataCollectionBase es de solo


lectura. (Se hereda de InternalDataCollectionBase).

IsSynchronized

Obtiene un valor que indica si el objeto InternalDataCollectionBase est


sincronizado. (Se hereda de InternalDataCollectionBase).

Item[Int32]

Obtiene el objeto DataTable en el ndice especificado.

Item[String]

Obtiene el DataTable con el nombre especificado.

Item[String,
String]

Obtiene el objeto DataTable con el nombre especificado en el espacio de


nombres indicado.

SyncRoot

Obtiene un objeto que se puede utilizar para sincronizar la coleccin. (Se


hereda de InternalDataCollectionBase).

Arriba

Mtodos
Mostrar:

Heredado

Protegido

Nombre

Descripcin

Add()

Crea un nuevo objeto DataTable utilizando un nombre predeterminado y


lo agrega a la coleccin.

Add(DataTable)

Agrega el objeto DataTable especificado a la coleccin.

Add(String)

Crea un objeto DataTable utilizando el nombre especificado y lo agrega a

la coleccin.

Add(String, String)

Crea un objeto DataTable utilizando el nombre especificado y lo agrega a


la coleccin.

AddRange

Copia los elementos de la matriz DataTable especificada al final de la


coleccin.

CanRemove

Comprueba si el objeto DataTable especificado se puede quitar de la


coleccin.

Clear

Borra todos los objetos DataTable de la coleccin.

Contains(String)

Obtiene un valor que indica si en la coleccin existe un


objeto DataTablecon el nombre especificado.

Contains(String,
String)

Obtiene un valor que indica si existe en la coleccin un


objeto DataTablecon el nombre y espacio de nombres de tabla
especificados.

CopyTo(Array, Int32)

Copia todos los elementos del InternalDataCollectionBase actual en


unArray unidimensional, empezando por el ndice
delInternalDataCollectionBase especificado. (Se hereda
deInternalDataCollectionBase).

CopyTo(DataTable[],
Int32)

Copia todos los elementos de la coleccin DataTableCollection actual en


una matriz Array unidimensional, empezando por el ndice especificado
de la matriz de destino.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual. (Se hereda


deObject).

GetEnumerator

Obtiene un IEnumerator para la coleccin. (Se hereda

deInternalDataCollectionBase).

GetHashCode

Sirve como la funcin hash predeterminada. (Se hereda de Object).

GetType

Obtiene el objeto Type de la instancia actual. (Se hereda de Object).

IndexOf(DataTable)

Obtiene el ndice del objeto DataTable especificado.

IndexOf(String)

Obtiene el ndice del objeto DataTable con el nombre especificado en la


coleccin.

IndexOf(String,
String)

Obtiene el ndice del objeto DataTable especificado en la coleccin.

Remove(DataTable)

Quita de la coleccin el objeto DataTable especificado.

Remove(String)

Quita de la coleccin el objeto DataTable con el nombre especificado.

Remove(String,
String)

Quita de la coleccin el objeto DataTable con el nombre especificado.

RemoveAt

Quita de la coleccin el objeto DataTable que est en el ndice


especificado.

ToString

Devuelve una cadena que representa al objeto actual. (Se hereda


deObject).

Arriba

Eventos
Mostrar:

Heredado

Protegido

Nombre

Descripcin

CollectionChanged

Se produce despus de que cambie la coleccin DataTableCollection por


agregar o quitar objetos DataTable.

CollectionChanging

Se produce mientras cambia la coleccin DataTableCollection porque se


estn agregando o quitando objetos DataTable.

Arriba

Comentarios
La coleccin DataTableCollection contiene todos los objetos DataTable para un
objeto DataSet concreto. Para obtener acceso a DataTableCollection de un DataSet,
utilice la propiedad Tables.
DataTableCollection utiliza mtodos como Add, Clear y Remove para administrar los
elementos de la coleccin.
Utilice el mtodo Contains para determinar si una tabla concreta (especificada
por ndice o por nombre) se encuentra en la coleccin.
Para navegar de una tabla a otra, utilice las
propiedades ChildRelations o ParentRelations de DataTable para obtener acceso a su
coleccin de objetos DataRelation. Tambin puede utilizar la
propiedad Relations para navegar en las relaciones primarias y secundarias de
las DataTables de una coleccin DataSet concreta.

Ejemplos
En el primer procedimiento de este ejemplo se recupera la
coleccin DataTableCollection de un objeto DataSet y se imprime el valor de cada
columna, en cada fila, de cada tabla. En el segundo procedimiento se crea un
nuevo objeto DataTable con dos columnas y se agrega a DataTableCollection.
C#
VB
private void GetTables(DataSet dataSet)
{
// Get Each DataTable in the DataTableCollection and
// print each row value.
foreach (DataTable table in dataSet.Tables)
foreach (DataRow row in table.Rows)

foreach (DataColumn column in table.Columns)


if (row[column] != null)
Console.WriteLine(row[column]);
}
private void CreateTable(DataSet dataSet)
{
DataTable newTable = new DataTable("table");
newTable.Columns.Add("ID", typeof(int));
newTable.Columns.Add("Name", typeof(string));
dataSet.Tables.Add(newTable);
}

Informacin de versin
.NET Framework
Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile


Compatible con: 4, 3.5 SP1

Plataformas
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se
admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o
versiones posteriores; no se admite Itanium)
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista
de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Seguridad para subprocesos


Este tipo es seguro para operaciones de lectura multiproceso. Debe sincronizar
cualquier operacin de escritura.

Vea tambin
Referencia
System.Data (Espacio de nombres)
DataColumn
DataRow
DataTable

DataSet

DataAdapter en ASP.NET

El objeto DataAdapter .NET de proveedor de datos est ajustado p


base de datos del DataSet. El DataAdapter administra objetos Com
sincronizacin. Puede utilizar el objeto OleDbDataAdapter para re
ActiveX Data Objects (ADO) o Registro.

El objeto DataAdapter es slo una forma de que transfiere datos en


control a la funcionalidad de relleno o actualizacin, puede escribir
proceso y manipular directamente el Command y los objetos DataR
ARQUITECTURA
El DataAdapter administra varios objetos Command:
UpdateCommand
InsertCommand
DeleteCommand
SelectCommand
El DataAdapter incluye tres metodos principales:
Fill

El DataAdapter recupera slo la cantidad mnima de esquema que es necesario, el nombre de


la propiedad SelectCommand para devolver un DataReader del que se leen los registros

FillSchema Este mtodo consulta la base de datos de informacin de esquema de ser necesario. Esto inclu
configurar el mtodo Fill para recuperar esta informacin de esquema adicional, establezca el
MissingSchemaAction.AddWithKey.
Update

Cuando actualiza la base de datos, el DataAdapter comprueba la propiedad RowState de cada


al InsertCommand o a la propiedad UpdateCommand para cambiar a la base de datos segn c
personalizar cmo procesa las actualizaciones DataAdapter.

A traves de este ejemplo realizamos un listado de los clientes almac

NorthWind
...
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'Conectando a la base de datos NorthWind
Dim cn As New SqlConnection("DataBase=NorthWind; Server=.; uid=sa; pw d=sql")
Dim strSQL As String
'Listar los Customers
strSQL = "Select * from Customers"
Dim daEmp As New SqlDataAdapter(strSQL, cn)
Dim dtEmp As New DataTable
daEmp.Fill(dtEmp)
DataGridView 1.DataSource=dtEmp
End Sub

A traves de este ejemplo listamos los clientes almacenados en la bas


en un ListBox
'Conectando a la base de datos NorthWind
Dim cn As New SqlConnection("DataBase=NorthWind; Server=.; uid=sa; pw d=sql")
Dim strSQL As String
'Listar los Customers
strSQL = "Select * from Customers"
Dim daEmp As New SqlDataAdapter(strSQL, cn)
Dim dtEmp As New DataTable
daEmp.Fill(dtEmp)
ListBox1.DataSource=dtEmp
ListBox1.DataTextField="nombre"
ListBox1.DataValueField="codigo"
End Sub

DataReader en ASP.NET

La recuperacin de datos mediante DataReader implica crear una


continuacin, para lo cual se llama a Command.ExecuteReader a f

DataReader proporciona una secuencia de datos sin bfer que perm


eficazmente y de forma secuencial los resultados procedentes de un
cuando se trata de recuperar grandes cantidades de datos, ya que
Metodos:
Read

Puede utilizar el mtodo Read del objeto DataReader para obtener una fila a partir de los resul
pasar a DataReader el nombre o referencia numrica de la columna en cuestin. Para tener acc
GetDouble, GetGuid, GetInt32, etc).

Close

Siempre debe llamar al mtodo Close cuando haya terminado de utilizar el objeto DataReader

NextResult El DataReader proporciona el mtodo NextResult para recorrer los conjuntos de resultados en

A traves de este ejemplo realizamos un listado de categorias y visua


Try
myconexion.Open()
myreader = mycomand.ExecuteReader()
While myreader.Read Then
ListBox1.Items.Add(myreader(0).ToString+Space(5)+myreader(1).ToString)
End While
myreader.close()
Catch ex As Exception
Finally
myconexion.Close()
End Try
End Sub

A traves de este ejemplo vamos a cargar los datos de las categorias


Using CMD As New SqlCommand("Select * from tb_categorias", cn.conecta)
cn.conecta.Open()
'Ejecutar el ExecuteReader
Dim dr As SqlDataReader = CMD.ExecuteReader
DropDow nList1.DataSource = dr
DropDow nList1.DataTextField = "NombreCategoria"
DropDow nList1.DataValueField = "idcategoria"
Me.DropDow nList1.DataBind()
cn.conecta.Close()
End Using
End Using
End Sub

DataAdapter
En ADO.NET, un DataAdapter funciona como un puente entre un origen de datos y una clase
de datos desconectado, como un conjunto de datos . Al nivel ms simple especificar
comandos SQL que proporcionan funcionalidad CRUD elemental. En un nivel ms avanzado
que ofrece todas las funciones necesarias para crear conjuntos de datos de establecimiento
inflexible de tipos , incluyendo DataRelations . Adaptadores de datos son una parte integral de
ADO.NET gestionado proveedores , que son el conjunto de objetos que se utilizan para la
comunicacin entre una fuente de datos y un conjunto de datos. ( Adems de los adaptadores
, los proveedores administrados incluyen objetos de conexin , objetos de lector de datos y
objetos de comando . ) Los adaptadores se utilizan para el intercambio de datos entre un
origen de datos y un conjunto de datos . En muchas aplicaciones , esto significa la lectura de
los datos de una base de datos en un conjunto de datos , y luego escribiendo los datos
modificados desde el conjunto de datos en la base de datos . Sin embargo , un adaptador de
datos puede mover datos entre cualquier fuente y un conjunto de datos . Por ejemplo , podra
haber un adaptador que mueve datos entre un servidor de Microsoft Exchange y un conjunto
de datos.

objetos datareader

ADO.NET es una evolucin del modelo de acceso a datos de ADO que controla directamente los
requisitos del usuario para programar aplicaciones escalables. Se dise especficamente para el Web,
teniendo en cuenta la escalabilidad, la independencia y el estndar XML.
ADO.NET utiliza algunos objetos ADO, como Connection y Command, y tambin agrega objetos
nuevos. Algunos de los nuevos objetos clave de ADO.NET son DataSet, DataReader y DataAdapter.
La diferencia ms importante entre esta fase evolucionada de ADO.NET y las arquitecturas de datos
anteriores es que existe un objeto, DataSet, que es independiente y diferente de los almacenes de datos.
Por ello, DataSet funciona como una entidad independiente. Se puede considerar el objeto DataSet como
un conjunto de registros que siempre est desconectado y que no sabe nada sobre el origen y el destino
de los datos que contiene. Dentro de un objeto DataSet, de la misma manera que dentro de una base de
datos, hay tablas, columnas, relaciones, restricciones, vistas, etc.
El objeto DataAdapter es el objeto que se conecta a la base de datos para llenar el objeto DataSet. A
continuacin, se vuelve a conectar a la base de datos para actualizar los datos de dicha base de datos
a partir de las operaciones realizadas en los datos contenidos en el objeto DataSet. En el pasado, el
procesamiento de datos se basaba principalmente en la conexin. Ahora, con el fin de proporcionar a las
aplicaciones multinivel mayor eficacia, se est adoptando para el procesamiento de datos un enfoque
basado en mensajes que manipulan fragmentos de informacin. En el centro de este enfoque se sita el
objeto DataAdapter, que proporciona un puente entre un objeto DataSet y un almacn de datos de origen
para recuperar y guardar datos. Para ello, enva solicitudes a los comandos SQL apropiados que se
ejecutan en el almacn de datos.
El objeto DataSet basado en XML proporciona un modelo de programacin coherente que funciona con
todos los modelos de almacenamiento de datos: sin formato, relacional o jerrquico. Funciona sin tener
'conocimiento' del origen de los datos y representa a los datos que contiene como colecciones y tipos de
datos. Independientemente del origen de los datos del objeto DataSet, stos se manipulan mediante el
mismo conjunto de API estndar expuestas a travs del objeto DataSet y sus objetos subordinados.
Aunque el objeto DataSet no tiene conocimiento del origen de sus datos, el proveedor administrado tiene
informacin detallada y especfica. La funcin del proveedor administrado es conectar, llenar y almacenar
el objeto DataSet desde almacenes de datos (o viceversa). Los proveedores de datos OLE DB y SQL
Server de .NET (System.Data.OleDb y System.Data.SqlClient) que forman parte de .Net Framework
proporcionan cuatro objetos bsicos: Command, Connection, DataReader y DataAdapter. En el resto
de las secciones de este documento, se describir cada parte del objeto DataSet y los proveedores de
datos OLE DB y SQL Server de .NET, con el fin de explicar qu son y cmo se pueden utilizar al
programar.
En las siguientes secciones se presentarn algunos objetos que han evolucionado desde
la tecnologa anterior y otros objetos nuevos. Los objetos son los siguientes:
Objetos Connection. Para conectar con una base de datos y administrar las transacciones en una base
de datos.
Objetos Command. Para emitir comandos SQL a una base de datos.
Objetos DataReader. Proporcionan una forma de leer una secuencia de registros de datos slo hacia
delante desde un origen de datos SQL Server.
Objetos DataSet. Para almacenar datos sin formato, datos XML y datos relacionales, as como para
configurar el acceso remoto y programar sobre datos de este tipo.
Objetos DataAdapter. Para insertar datos en un objeto DataSet y reconciliar datos de la base de datos.
Nota al trabajar con conexiones a una base de datos, hay dos opciones diferentes: un proveedor de datos
de SQL Server de .NET (System.Data.SqlClient) y un proveedor de datos OLE DB de .NET
(System.Data.OleDb). En estos ejemplos se utilizar el proveedor de datos SQL Server de .NET. Estn
programados para comunicarse directamente con Microsoft SQL Server. El proveedor de datos OLE DB
de .NET se utiliza para comunicarse con cualquier proveedor OLE DB (ya que utiliza OLE DB como
tecnologa subyacente).
Conexiones
Para establecer la comunicacin con bases de datos, se utilizan las conexiones y se representan
mediante clases especficas de proveedor, como SQLConnection. Los comandos viajan por las
conexiones y devuelven conjuntos de resultados en forma de secuencias que puede leer un
objeto DataReader o que se pueden insertar en un objeto DataSet.

En el ejemplo siguiente se muestra la forma de crear un objeto de conexin. Las conexiones se pueden
abrir explcitamente mediante llamadas al mtodo Open de la conexin; tambin se pueden abrir
implcitamente al utilizar un objeto DataAdapter.
Para ver el grfico seleccione la opcin "Descargar" del men superior
VB AdoOverview1.aspx
[] | [Ver cdigo fuente]
Comandos
Los comandos contienen la informacin que se enva a una base de datos y se representan mediante
clases especficas de un proveedor, como SQLCommand. Un comando podra ser una llamada a
un procedimiento almacenado, una instruccin UPDATE o una instruccin que devuelve resultados.
Tambin es posible utilizar parmetros de entrada o de resultados y devolver valores como parte de la
sintaxis del comando. En el ejemplo siguiente se muestra la forma de ejecutar una instruccin INSERT en
la base de datos Northwind.
Para ver el grfico seleccione la opcin "Descargar" del men superior
VB AdoOverview2.aspx
[Ejecutar ejemplo] | [Ver cdigo fuente]
Objetos DataReader
El objeto DataReader es, en cierto modo, sinnimo de un cursor de slo lectura y slo hacia delante para
datos. La API de DataReader es compatible con datos sin formato y con datos jerrquicos. Cuando se
ejecuta un comando en la base de datos, se devuelve un objeto DataReader. El formato del
objeto DataReader devuelto es distinto de un conjunto de registros. Por ejemplo, podra utilizarse el
objeto DataReader para mostrar los resultados de una lista de bsqueda en una pgina Web.
Para ver el grfico seleccione la opcin "Descargar" del men superior
VB AdoOverview3.aspx
[Ejecutar ejemplo] | [Ver cdigo fuente
Objetos DataSet y DataAdapter
Objetos DataSet
El objeto DataSet es similar al objeto Recordset de ADO, pero ms eficaz y con una diferencia
importante: DataSet siempre est desconectado. El objeto DataSet representa a una memoria cach de
datos, con estructuras anlogas a las de una base de datos, como tablas, columnas, relaciones y
restricciones. Sin embargo, aunque se puede utilizar un objetoDataSet como una base de datos (y
su comportamiento es muy similar), es importante recordar que los objetos DataSet no interactan
directamente con bases de datos ni con otros datos de origen. Esto permite al programador trabajar con
un modelo de programacin que siempre es coherente, independientemente de dnde resida el origen de
datos. En los objetos DataSet se pueden colocar datos provenientes de una base de datos,
un archivo XML, cdigo o informacin escrita por el usuario. A continuacin, a medida que se realizan
cambios en el objeto DataSet, se puede hacer un seguimiento y una comprobacin de los cambios antes
de actualizar los datos de origen. El mtodo GetChanges del objeto DataSet creaen realidad otro
objeto DataSet que slo contiene los cambios realizados en los datos. Posteriormente, un
objeto DataAdapter u otros objetos, utilizan este objeto DataSet para actualizar el origen de datos
original.
El objeto DataSet tiene muchas caractersticas de XML, incluida la capacidad de producir y consumir
datos XML y esquemas XML. Los esquemas XML se pueden utilizar para describir esquemas
intercambiables a travs de servicios Web. De hecho, un objeto DataSet con un esquema puede
compilarse con seguridad de tipos y finalizacin automtica de instrucciones.
Objetos DataAdapter (OLEDB/SQL)
El objeto DataAdapter funciona como un puente entre el objeto DataSet y los datos de origen. El uso del
objeto SqlDataAdapter especfico del proveedor (junto con los
objetos SqlCommand y SqlConnection asociados) permite aumentar el rendimiento global al trabajar
con bases de datos de Microsoft SQL Server. Para otras bases de datos compatibles con OLE DB, se
debe utilizar el objeto OleDbDataAdapter y los objetos OleDbCommand y OleDbConnection asociados.
El objeto DataAdapter utiliza comandos para actualizar el origen de datos despus de hacer
modificaciones en el objeto DataSet. Si se utiliza el mtodo Fill del objetoDataAdapter, se llama al
comando SELECT; si se utiliza el mtodo Update se llama al comando INSERT, UPDATE o DELETE
para cada fila modificada. Es posible establecer explcitamente estos comandos con el fin de controlar las
instrucciones que se utilizan en tiempo de ejecucin para resolver cambios, incluido el uso
de procedimientos almacenados. En escenarios ad-hoc, un objeto CommandBuilder puede generarlos
en tiempo de ejecucin a partir de una instruccin de seleccin. Sin embargo, para generar en tiempo de

ejecucin hay que hacer unviaje de ida y vuelta adicional al servidor con el fin de recopilar los metadatos
necesarios; por tanto, si se proporcionan explcitamente los comandos INSERT, UPDATE y DELETE en
tiempo de diseo, el rendimiento en tiempo de ejecucin mejorar.
SqlConnection myConnection = new
SqlConnection("server=(local)\VSdotNET;Trusted_Connection=yes;database=northwind");
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter("select * from customers", myConnection);
mySqlDataAdapter.InsertCommand.CommandText = "sp_InsertCustomer";
mySqlDataAdapter.InsertCommand.CommandType = CommandType.StoredProcedure;
mySqlDataAdapter.DeleteCommand.CommandText = "sp_DeleteCustomer";
mySqlDataAdapter.DeleteCommand.CommandType = CommandType.StoredProcedure;
mySqlDataAdapter.UpdateCommand.CommandText = "sp_UpdateCustomers";
mySqlDataAdapter.UpdateCommand.CommandType = CommandType.StoredProcedure;
Dim myConnection As SqlConnection = New
SqlConnection("server=(local)\VSdotNET;Trusted_Connection=yes;database=northwind")
Dim mySqlDataAdapter As SqlDataAdapter = New SqlDataAdapter("select * from customers",
myConnection)
mySqlDataAdapter.InsertCommand.CommandText = "sp_InsertCustomer"
mySqlDataAdapter.InsertCommand.CommandType = CommandType.StoredProcedure
mySqlDataAdapter.DeleteCommand.CommandText = "sp_DeleteCustomer"
mySqlDataAdapter.DeleteCommand.CommandType = CommandType.StoredProcedure
mySqlDataAdapter.UpdateCommand.CommandText = "sp_UpdateCustomers"
mySqlDataAdapter.UpdateCommand.CommandType = CommandType.StoredProcedure
C#

VB

mySqlDataAdapter.Update(myDataSet);
mySqlDataAdapter.Update(myDataSet)
C#

VB

Los registros se asignan a los comandos correspondientes de la forma apropiada.


Para ver el grfico seleccione la opcin "Descargar" del men superior
Figura: Objetos DataAdapter y DataSet
En el ejemplo siguiente se ilustra la carga de un objeto DataAdapter a travs de una instruccin SELECT.
A continuacin, se actualizan, eliminan y agregan algunos registros en el objeto DataSet. Por ltimo, se
devuelven las actualizaciones a la base de datos de origen a travs del objeto DataAdapter. En la pgina,
se muestran los comandos DeleteCommand, InsertCommand y UpdateCommand creados. Tambin se
ilustra el uso de varios objetos DataAdapter para cargar varias tablas (Customers y Orders) en el
objeto DataSet.
Para ver el grfico seleccione la opcin "Descargar" del men superior
VB AdoOverview4.aspx
[Ejecutar ejemplo] | [Ver cdigo fuente]
Resumen de la seccin
1. La tecnologa ADO.NET, integrada en .Net Framework, es el siguiente estado de evolucin de ADO.
2.
3. Se dise teniendo en cuenta los modelos multinivel, la independencia y el estndar XML. Para estos
escenarios se proporcionan dos objetos nuevos, DataSet y DataAdapter.
4. Se puede utilizar ADO.NET para obtener datos de una secuencia o para almacenar datos en una
memoria cach a fin de realizar actualizaciones.
5. La documentacin contiene mucha ms informacin acerca de ADO.NET.
6. Hay que tener en cuenta que se puede ejecutar un comando directamente en la base de datos para
realizar inserciones, actualizaciones y eliminaciones. Para insertar, actualizar o eliminar datos no hay
que colocarlos primero en un objeto DataSet.
7. Adems, se puede utilizar un objeto DataSet para enlazar con los datos, examinarlos y explorar sus
relaciones.
Miguel Tito

Leer ms: http://www.monografias.com/trabajos14/informe-ado-net/informe-adonet.shtml#OBJET#ixzz2mebdQS6f

DataAdapter DataReader
El objeto DataAdapter .NET de proveedor de datos est ajustado para leer registros en un objeto
DataSet y actualiza la base de datos del DataSet. El DataAdapter administra objetos Command y
DataReader y simplifica el proceso de sincronizacin. Puede utilizar el objeto
OleDbDataAdapter para rellenar un DataSet de un objeto Recordset Microsoft ActiveX Data
Objects (ADO) o Registro.
El objeto DataAdapter es slo una forma de que transfiere datos entre una base de datos y
DataSet. Si necesita ms control a la funcionalidad de relleno o actualizacin, puede escribir una
funcin personalizada para administrar este proceso y manipular directamente el Command y
los objetos DataReader.

La recuperacin de datos mediante DataReader implica crear una instancia del objeto
Command y de un DataReader a continuacin, para lo cual se llama a Command.ExecuteReader
a fin de recuperar filas de un origen de datos.
DataReader proporciona una secuencia de datos sin bfer que permite a la lgica de los
procedimientos procesar eficazmente y de forma secuencial los resultados procedentes de un
origen de datos. DataReader es la mejor opcin cuando se trata de recuperar grandes cantidades
de datos, ya que stos no se almacenan en la memoria cach.

Preguntas a comentar
Cuando seria conveniente utilizar un DataReader para recuperar y mostrar los datos de una base
de datos y cuando seria factible utilizar un DataAdapter para recuperar los datos en un DataSet.
Dar un ejemplo de este tema.
PUBLICADO POR DAMASO LOPEZ EN 08:27

17 COMENTARIOS:

gustavo polar dijo...


Para utilizar un data reader es cuando por ejemplo no se necesita ningun valor oculto
que identifique a la tabla como por ejemplo las fechas ; ya que al utilizar las fechas no es
necesario tener un parametro oculto para poder realizar la consulta en la base de datos,
pero si selecciona un cliente tiene que tener un valor(atributo) que lo identifique para
poder buscarlo y asi poder realizar consulta,eliminacion,ingreso,etc en una base de
datos.

gustavo polar sanchez


16 DE JUNIO DE 2008 21:46

Aldo Oliva Fuenzalida dijo...


El DataAdapter se utiliza cuando sea necesario identificar un registro con alguno de sus
campos (por ejemplo, una tabla de productos, cada producto debe ser identificado
normalmente con un cdigo de producto).
El DataReader se utilizara cuando no se necesita identificar mediante un campo en
especial el registro de la tabla (por ejemplo, una lista de aos, en ese caso los aos no
requieren ser identificados con un codigo)
16 DE JUNIO DE 2008 22:12

Adolfo Amba dijo...


El dataReader se utiliza para trabajar con la informacion extraida de una tabla por
ejemplo: la fecha, los meses, los aos, o un campo especfico. En el caso del dataAdapter
seria conveniente utilizarlo cuando se necesite un campo como identificador que por lo
general es un codigo.
17 DE JUNIO DE 2008 13:08

Carlos Avalos Andrade dijo...


El dataAdapter lo utilizamos para campos que estan identificados mediante un id y por
lo cual son unicos como un cliente que se identifica por un id unico, el dataReader lo
utilizamos para campos especificos y que mayor mente son fechas, por eso utlizamos un
distinct para no recoger informacion duplicada.
17 DE JUNIO DE 2008 15:36

Miguel Flores Flores dijo...


DataReader proporciona una secuencia de datos sin bfer que permite a la lgica de los
procedimientos procesar eficazmente y de forma secuencial los resultados procedentes
de un origen de datos. DataReader es la mejor opcin cuando se trata de recuperar
grandes cantidades de datos, ya que stos no se almacenan en la memoria cach.
el DataAdapter se utilizan para administrar cambios en el origen de datos, Por ejemplo,
si se han agregado filas, se debe establecer la propiedad InsertCommand antes de llamar
a Update. Cuando Update procesa una fila insertada, actualizada o eliminada,
DataAdapter utiliza la propiedad Command adecuada para la accin en cuestin. La
informacin actual relacionada con la fila modificada se pasa al objeto Command a
travs de la coleccin Parameters.
19 DE JUNIO DE 2008 12:44

ricardo dijo...
Como se puede apreciar en la exlicacion, un DataAdapter es necesario al momento de
realizar e identificar registros para poder realizarles las acciones deseadas como una
insercion, eliminacion o actualizacion segun sea el caso, que va a ser guardado o leido en
un dataset con el cual se comunica y realiza sus aperaciones con la bd, mientras que un
datareader no necesita de dicha identificacion primaria la cual solo va a servir para
recuperar informaciones muy grandes la cual simplifica la labor por no gudarse en
memoria.
20 DE JUNIO DE 2008 10:04

Sammy dijo...
Primera Pregunta:
Cuando seria conveniente utilizar un DataReader para recuperar y
mostrar los datos de una base de datos y cuando seria factible utilizar un
DataAdapter para recuperar los datos en un DataSet.
Dar un ejemplo de este tema

DataReader:
- Ya que el DataReader es un sinonimo de un cursor de solo lectura, podramos poner el
sigueinte ejemplo: Podra utilizarse el objeto DataReader para mostrar los resultados de
una lista de bsqueda en una pgina Web

DataAdapter:
- Ya que el DataAdapter funciona como un puente entre el objeto DataSet y los datos de
origen, se podra dar el sigueinte ejemplo: Actualizacin, eliminacin y agregacin de
registros de un usuario.

ATTE:

Sammy Caldern Cabrejos


Alumno Computacin e Informtica
20 DE JUNIO DE 2008 10:33

Jose Yupanqui dijo...


DataReader : Si lo que queremos hacer principalmente son operaciones de obtencin
y visualizacin de los registros obteniendo un mejor rendimiento.
DataAdapter : cuando tengamos que manipular varios datos a la vez o ver la relacion de
datos entre varias tablas y vamos usar las funciones de insertar,actualizar, eliminar u
otras operaciones .
20 DE JUNIO DE 2008 12:39

Jean Pierre Inga Borja dijo...

El dataReader sirve para traer una consulta y recorrera linea por linea

El dataadapter sirve para traer una consulta pero te trae un dataset tambien se puede
recorrer las filas pero es mas complicado
20 DE JUNIO DE 2008 20:54

Jorge Guerra Taipe dijo...


"Cuando seria conveniente utilizar un DataReader para recuperar y mostrar los datos de
una base de datos" :

Un DataReader es la mejor opcion cuando se trata de recuperar grandes cantidades de


datos, ya que estos no se almacenan en la memoria cache, un ejemplo simple seria traer
todos los registros de una determinada tabla.

"cuando seria factible utilizar un DataAdapter para recuperar los datos en un DataSet." :

un caso podria ser cuando se tiene distintos origenes de datos en el DataSet, se podrian
utilizar varios DataAdapter para ocuparse de la comunicacion con cada origen de datos.
23 DE JUNIO DE 2008 14:30

Roxana_Chero dijo...
DataAdapter dispone de cuatro propiedades que se utilizan para recuperar y actualizar
datos en un origen de datos: la propiedad SelectCommand devuelve datos a partir del
origen de datos; las propiedadesInsertCommand, UpdateCommand y DeleteCommand
se utilizan para administrar cambios en el origen de datos. La propiedad
SelectCommand se debe establecer antes de llamar al mtodo Fill de DataAdapter. Es
necesario establecer las propiedades InsertCommand, UpdateCommand o
DeleteCommand antes de llamar al mtodo Update del DataAdapter, en funcin de las
modificaciones realizadas en los datos en el DataSet.
24 DE JUNIO DE 2008 18:23

Johann Alvarado Quispe dijo...


Diferencia DataReader y DataAdapter
La diferencia mas resaltante entre el DataAdapter y DataReader se podria traducir
dependiendo de la operacion que se quiera realizar, por ejemplo como todos sabemos
el dataAdapter es mas completo y se pueden ejecutar sentencias de INSERT DELETE
UPDATE Y SELECT en cambio en un dataReader solo se puede hacer la funcion de
lectura de datos.
Por ejemplo se podria aplicar un DataReader si tenemos 10.000 registros y necesitas
simplemente mostrarlos por ello no necesitars reconectarte de nuevo a la base de
datos .Si a esta operacion le aplicas DataAdapter la pgina pesaria muchos mb por el
uso del ViewState del DataAdapter.
5 DE JULIO DE 2008 01:23

Marco Espinal dijo...


El DataAdapter puede ser usado para emplear un mantenimiento en las tablas que lo
requieran al usar las sentencias SELECT, UPDATE, INSERT y DELETE. En cambio, el
DataReader es ms eficiente si slo se hace una lectura de data ya que no se necesita
hacer denuevo una conexin a la base de datos. En este caso, lo recomendable sera que
DataAdapter se empleara para modificar datos en la BD y DataReader slo para
mostrarla.
5 DE JULIO DE 2008 10:46

Alex cucho dijo...


El DataAdapter lee los registros de la base datos y en el puede insertar, actualizar y
eliminar(propiedadesInsertCommand,
UpdateCommand y DeleteCommand) una gran diferencia entre el DataAdapter y el
DataReader es la cantidad de de datos que pueden recuperar,
el DataReader en cuestion de datos es mejor que el DataAdapter
5 DE JULIO DE 2008 21:48

Alex cucho dijo...


El DataAdapter lee los registros de la base datos y en el puede insertar, actualizar y
eliminar(propiedadesInsertCommand,
UpdateCommand y DeleteCommand) una gran diferencia entre el DataAdapter y el
DataReader es la cantidad de de datos que pueden recuperar,
el DataReader en cuestion de datos es mejor que el DataAdapter
5 DE JULIO DE 2008 21:53

Gary Lujn dijo...


1)DataReader es un objeto ligero y sper rpido que te permite leer un hacia enfrente
solamente. Es lo que se conoce como un firehose reader, porque avienta los datos como
si fuera una manguera a presin.

DATAADAPTER se usa conjuntamente con un DataSet, siendo el DataSet un objeto


para guardar los datos cuando estos son extraidos de un dataresource desde la BD.

EJEMPLO CON DATAADAPTER(DATASET)

Llenar un DataSet con 10.000 registros es mucho trabajo. Debido a que esto se
almacena en la PC del Servidor, entonces supongamos que tienes 100 usuarios que
estn pidiendo la misma data y el peso del dataSet es de 512 k. Multiplicando 512 k por
100 usuarios = 51.200 Kb (51 Mb Aprox.)

EJEMPLO CON DATAREADER

Se tiene 10.000 registros el cual de ninguna manera se aplicaria el dinamismo de el


DataAdapter porque sino la pgina te llegar a pesar mil millones de MB por el uso de
ViewState. Entonces como solamente se plasmar la informacin, no se necesita
reconectar de nuevo a la base de datos para comparar una situacin determinada.
13 DE JULIO DE 2008 15:11

Annimo dijo...
Un DataReader puede ser muy til para cuestiones de migracin de datos, de un orgen
a otro.

Un DataSet es ms til para manipular los datos de un origen.

Formularios!!!

UTILIZACION DE MULTIPLES
FORMULARIOS
Para utilizar varios formularios en nuestra aplicacin tendremos que
aadir cada uno de ellos mediante la opcin de men Insert /
Form o pulsando sobre el botn

Mtodo Show
Para llamar a un formulario desde el cdigo utilizaremos el
mtodo Show. Si el formulario 2 tiene en la propiedad Nameform2,
para llamarlo desde otro formulario pondremos:
Form2.Show

Si no ponemos ningn argumento se asume que el formulario


aparece en modo no modal, es decir, se permitir que se active
cualquier otro formulario sin cerrar el formulario 2. La otra modalidad
que existe es modal, lo que significa que no se permite el enfoque
hacia ningn otro formulario hasta que no se cierre el actual. Este
ltimo modo puede servir para cuadros de dilogo que soliciten
ciertos parmetros para que la aplicacin siga funcionando: una
contrasea.
Los argumentos del mtodo Show son:
0

vbModeless

No modal

vbModal

Modal

Ejemplo:
Form2.Show vbModal

Sentencia Load
La sentencia Load seguida del nombre de un formulario
provoca que se cargue el formulario en memoria pero sin
visualizarse, ya que la propiedad Visible se coloca a False.
Ejemplo
Load Form2

Realmente el mtodo Show realiza la carga del formulario en


memoria, si no estaba cargado antes, y coloca la
propiedadVisible del formulario a True. Durante este proceso
se provoca la activacin de los eventos Load y Activate del
formulario en ese orden. En dichos eventos se puede colocar
el cdigo necesario que haga que el formulario se inicie
siempre con los valores que queramos.
Si el formulario ya estaba cargado en memoria, mediante una
sentencia Load o porque se haya ocultado con el mtodoHide,
al llamarlo con el mtodo Show, nicamente se realizar la
modificacin de la propiedad Visible a True, y no se volver
a efectuar el proceso de carga del formulario a memoria.Por
tanto el formulario aparecer con los mismos datos que tena
cuando se ocult. Ahora el nico evento que se activar es
el Activate que se actuva cada vez que un formulario recibe el
enfoque o pasa a ser el formulario activo.

Sentencia Unload
Nos permite descargar un formulario de la memoria. Se
introduce junto al nombre del formulario que vayamos a
descargar:
Unload Form2

Si nos encontramos dentro del mismo formulario para


descargarlo no hace falta colocar el nombre sino nicamente:
Unload me

En una aplicacin con varios formularios debemos usar esta


sentencia para los mtodos que terminamos de utilizar, de
esta forma liberaremos espacio en memoria para que los
otros formularios puedan aprovecharla mejor.
La sentencia unload provoca la activacin de los eventos:
Deactivate: Al contrario que el evento Activate, este se activa
cada vez que un formulario pierde el enfoque. Tambin se activa
este evento al utilizar el mtodo Hide.
Unload: Este evento recibe el parmetro Cancel, y modificando su
valor podemos hacer que se suspenda (cancele) el proceso de
descarga de un formulario. Mediante 2 lneas de cdigo podemos
hacer una pregunta al usuario cada vez que se cierra un formulario
para que nos confirme la operacin:

Este cdigo provocar que cada vez que se cierre el


formulario de cualquier forma, (no slo mediante la
sentencia Unload sino tambien haciendo click sobre la "x",
el men de control o con ALT + F4) aparezca un mensaje
preguntndonos si realmente queremos salir:

Este tipo de mensajes los veremos en el captulo siguiente


dedicado a los cuadros de dilogo.
Query_Unload: Este evento se produce realmente antes que el
evento Unload, aunque por las posibilidades que tiene quera
dejarlo para el final.

En este evento adems de recoger el parmetro Cancel,


tambin nos proporciona el parmetro UnloadMode que segn
el valor que tenga podremos saber desde donde se produce la
posible descarga del formulario. Los valores que puede tener
son los siguientes:
0 - vbFormControlMenu: Significa que el cierre del
formulario se ha producido:
Pulsando sobre la "x"
Mediante la opcin cerrar del Men de Control.
Pulsando ALT + F4.
Cerrando el formulario desde la Barra de Tareas.

1 - vbFormCode: Indica que se ha cerrado el formulario


utilizando la sentencia Unload.
2 - vbAppWindows: Se cierra el formulario porque se apaga
el sistema desde Inicio / Apagar Sistema.
3 - vbAppTaskManager: Desde el administrador de
tareas de windows (CTRL + ALT + DEL) se cierra la
aplicacin que contiene el formulario
4 - vbFormMDIForm: Se produce cuando se cierra un
formulario hijo porque se est cerrando el
formulario MDI que lo contiene.
Mediante unas lneas de cdigo vamos a probar las
posibilidades de este evento. Segn desde donde se cierre el
formulario del que consta la aplicacin aparecer un mensaje
distinto pidindonos confirmacin en el proceso de descarga.
Nota: Para el correcto funcionamiento de este ejemplo se
debe compilar la aplicacin mediante File / Make EXE
File... y ejecutar la aplicacin desde fuera del entorno de
trabajo de VB.Esto es as para que se pueda cerrar la

aplicacin apagando el sistema y desde el administardor de


tareas.
El cdigo asociado al evento Query_Unload es el siguiente:

FORMULARIOS
Los formularios son tratados como controles con sus
propiedades, eventos y mtodos. Aunque digamos que se
trata de un control especial que utilizamos para contener los
controles ms usuales con los que construiremos nuestras
aplicaciones: textbox, label, commandbutton, etc...
En este captulo vamos a ver las propiedades y eventos ms
importantes de los formularios, como trabajar con mltiples
formularios y como se establece la comunicacin entre ellos.

Propiedades
Las propiedades ms comunes de los formularios y que son
similares al resto de los controles son las siguientes:
Name: Nombre del formulario, necesario para llamar al
formulario desde el cdigo.
Caption: Texto que aparece en el ttulo del formulario
Backcolor: Color de fondo del formulario.
Forecolor: color del texto del formulario.

Otras propiedades que son prppias de los formularios y que


es importante conocerlas para realizar una buena
presentacin en nuestras aplicaciones son las siguientes:
WindowState: Nos permite indicar el modo en el que
aparecer el formulario cuando sea llamado. Tiene tres
posibles valores:
0 - Normal
1 - Minimizado.

2 - Maximizado.
MinButton y MaxButton: Son dos propiedades que admiten
nicamente los valores True o False. Permiten que queden
habilitados los botones minimizar y maximizar,
respectivamente de un formulario.Nos sirven para controlar
que el usuario no pueda cambiar el tamao en que
presentemos un formulario en pantalla.Si slo desactivamos
una de las propiedades, el botn correspondiente aparecer
desactivado, pero si desactivamos las dos propiedades, no
aparecer ninguno de los 2 botones, nicamente lo har el
botn con la "x" de cerrar.
MinButton = Tr MinButton = Fa MinButton = Tr MinButton = Fa
ueMaxButton
lseMaxButton ueMaxButton = lseMaxButton
= True
= True
False
= False

ShowInTaskbar: Mediante esta propiedad podremos


controlar que determinado formulario aparezca o no en
la barra de tareas de Windows. En una aplicacin con
mltiples formularios, si para cada uno de los que aparezca
en pantalla, nos aparece tambin en la barra de tareas, al
final la barra estar llena de aplicaciones. Podemos hacer que
determinados formularios no aparezcan en ella colocando esta
propiedad a False.
Icon: Nos permite modificar el icono que aparece a la
izquierda de la barra del ttulo de cualquier formulario, que
es donde aparece el men de control, para personalizarlo en
nuestra aplicacin
El icono que aparece por defecto en todos los formularios se
puede cambiar por otro ms simptico:

ControlBox: Controla la aparicin del men de control.


Esta propiedad por defecto est activada, aunque si la
ponemos a False, no slo hacemos desaparecer el icono que
simboliza al men de control, sino que desaparecen tambin
los botones de minimizar, maximizar y cerrar. Unicamente
aparece la barra de titulo con el caption:

Si adems de colocar ControlBox a False,


colocamos MinButton y MaxButton a False y dejamos vaca
la propiedadCaption, es decir sin nada en el ttulo, nos
aparecer un formulario sin barra de titulo, es decir,
nicamente un rectngulo gris que s podremos cambiar de
tamao apuntando sobre el borde.

BorderStyle: Esta propiedad es la que ms opciones tiene y


la que ms posibilidades ofrece para cambiar el aspecto de
nuestros formularios. El cambiar el valor de esta propiedad
afecta tambin a las
propiedades MinButton, MaxButton yShowInTaskbar que
cambian automticamente segn la opcin que hayamos
seleccionado. En la siguiente tabla aparece una explicacin de
cada una de sus opciones y de que valor adoptan otras
propiedades del formulario:
Opciones
de
BorderSt
yle

0- None

Utilidad

MinButt MaxBut ShowInTas


on
ton
kbar

No aparecen bordes ni
barra de titulo. No
podemos modificar su
Fals Fals
tamao de ninguna
e
e
forma. Sirve para
pantallas de presentacin

False

Muestra

al principio de nuestra
aplicacin
No se puede cambiar su
tamao.Ni siquiera se
puede maximizar
haciendo doble click
1 - Fixed sobre la barra del ttulo,
Fals Fals
Single
algo que s se puede
e
e
hacer desactivando los
botonesMinButton y MaxB
utton en un formulario
normal

True

Formulario por defecto de


VB.Contiene todos los
botones de la barra del
ttulo, se puede cambiar True True
su tamao actuando
sobre el borde y aparece
en la barra de tareas.

True

2Sizable
(aparece
por
defecto)

No se puede cambiar su
3 - Fixed
tamao y no aparece en
Dialog
la barra de tareas

Fals Fals
e
e

False

Aparece con la barra de


titulo ms pequea, es el
que utiliza VB para
4 - Fixed
mostrar la caja de
Fals Fals
ToolWind
herramientas. No aparece e
e
ow
el icono del men de
control ni aparece en la
barra de tareas.

False

5Sizable
ToolWind
ow

False

Igual que el anterior pero


s permite modificar su
Fals Fals
tamao actuando sobre el e
e
borde.

UTILIZACION DE MULTIPLES
FORMULARIOS

Para utilizar varios formularios en nuestra aplicacin tendremos que


aadir cada uno de ellos mediante la opcin de men Insert /
Form o pulsando sobre el botn

Mtodo Show
Para llamar a un formulario desde el cdigo utilizaremos el
mtodo Show. Si el formulario 2 tiene en la propiedad Nameform2,
para llamarlo desde otro formulario pondremos:
Form2.Show

Si no ponemos ningn argumento se asume que el formulario


aparece en modo no modal, es decir, se permitir que se active
cualquier otro formulario sin cerrar el formulario 2. La otra modalidad
que existe es modal, lo que significa que no se permite el enfoque
hacia ningn otro formulario hasta que no se cierre el actual. Este
ltimo modo puede servir para cuadros de dilogo que soliciten
ciertos parmetros para que la aplicacin siga funcionando: una
contrasea.
Los argumentos del mtodo Show son:
0

vbModeless

No modal

vbModal

Modal

Ejemplo:
Form2.Show vbModal

Sentencia Load
La sentencia Load seguida del nombre de un formulario
provoca que se cargue el formulario en memoria pero sin
visualizarse, ya que la propiedad Visible se coloca a False.
Ejemplo
Load Form2

Realmente el mtodo Show realiza la carga del formulario en


memoria, si no estaba cargado antes, y coloca la
propiedadVisible del formulario a True. Durante este proceso

se provoca la activacin de los eventos Load y Activate del


formulario en ese orden. En dichos eventos se puede colocar
el cdigo necesario que haga que el formulario se inicie
siempre con los valores que queramos.
Si el formulario ya estaba cargado en memoria, mediante una
sentencia Load o porque se haya ocultado con el mtodoHide,
al llamarlo con el mtodo Show, nicamente se realizar la
modificacin de la propiedad Visible a True, y no se volver
a efectuar el proceso de carga del formulario a memoria.Por
tanto el formulario aparecer con los mismos datos que tena
cuando se ocult. Ahora el nico evento que se activar es
el Activate que se actuva cada vez que un formulario recibe el
enfoque o pasa a ser el formulario activo.

Sentencia Unload
Nos permite descargar un formulario de la memoria. Se
introduce junto al nombre del formulario que vayamos a
descargar:
Unload Form2

Si nos encontramos dentro del mismo formulario para


descargarlo no hace falta colocar el nombre sino nicamente:
Unload me

En una aplicacin con varios formularios debemos usar esta


sentencia para los mtodos que terminamos de utilizar, de
esta forma liberaremos espacio en memoria para que los
otros formularios puedan aprovecharla mejor.
La sentencia unload provoca la activacin de los eventos:
Deactivate: Al contrario que el evento Activate, este se activa
cada vez que un formulario pierde el enfoque. Tambin se activa
este evento al utilizar el mtodo Hide.
Unload: Este evento recibe el parmetro Cancel, y modificando su
valor podemos hacer que se suspenda (cancele) el proceso de
descarga de un formulario. Mediante 2 lneas de cdigo podemos
hacer una pregunta al usuario cada vez que se cierra un formulario
para que nos confirme la operacin:

Este cdigo provocar que cada vez que se cierre el


formulario de cualquier forma, (no slo mediante la
sentencia Unload sino tambien haciendo click sobre la "x",
el men de control o con ALT + F4) aparezca un mensaje
preguntndonos si realmente queremos salir:

Este tipo de mensajes los veremos en el captulo siguiente


dedicado a los cuadros de dilogo.
Query_Unload: Este evento se produce realmente antes que el
evento Unload, aunque por las posibilidades que tiene quera
dejarlo para el final.

En este evento adems de recoger el parmetro Cancel,


tambin nos proporciona el parmetro UnloadMode que segn
el valor que tenga podremos saber desde donde se produce la
posible descarga del formulario. Los valores que puede tener
son los siguientes:
0 - vbFormControlMenu: Significa que el cierre del
formulario se ha producido:
Pulsando sobre la "x"
Mediante la opcin cerrar del Men de Control.
Pulsando ALT + F4.
Cerrando el formulario desde la Barra de Tareas.

1 - vbFormCode: Indica que se ha cerrado el formulario


utilizando la sentencia Unload.
2 - vbAppWindows: Se cierra el formulario porque se apaga
el sistema desde Inicio / Apagar Sistema.
3 - vbAppTaskManager: Desde el administrador de
tareas de windows (CTRL + ALT + DEL) se cierra la
aplicacin que contiene el formulario
4 - vbFormMDIForm: Se produce cuando se cierra un
formulario hijo porque se est cerrando el
formulario MDI que lo contiene.
Mediante unas lneas de cdigo vamos a probar las
posibilidades de este evento. Segn desde donde se cierre el
formulario del que consta la aplicacin aparecer un mensaje
distinto pidindonos confirmacin en el proceso de descarga.
Nota: Para el correcto funcionamiento de este ejemplo se
debe compilar la aplicacin mediante File / Make EXE
File... y ejecutar la aplicacin desde fuera del entorno de
trabajo de VB.Esto es as para que se pueda cerrar la
aplicacin apagando el sistema y desde el administardor de
tareas.
El cdigo asociado al evento Query_Unload es el siguiente:

COMUNICACION ENTRE
FORMULARIOS
Desde un formulario se puede tener acceso a los controles y
propiedades de otro formulario.
En lugar de realizar el paso de parmetros cuando se llama a
otro formulario que queremos que aparezca con unos
determinados valores iniciales, lo que se hace es acceder a
los controles del otro formulario y despus mostrarlo
mediante el mtodo Show.

Para acceder a los controles de otro formulario se sigue la


siguiente sintaxis:
Formulario!Control.Propiedad = valor
Se debe colocar una admiracin "!" entre el formulario y el
control y un punto entre el control y la propiedad
Ejemplo:
Form2!Label1.Caption = "Nmero de Clientes"

Al acceder a las propiedades de otro formulario


automticamente se carga ste en memoria, si no lo estaba
ya antes. Una vez que hayamos modificado sus propiedades
los visualizaremos con el mtodo Show.
No se puede acceder a las variables declaradas en otro
formulario, de modo que si queremos trabajar con variables
generales, las cuales sean accesibles desde cualquier
formulario de la aplicacin, tendremos que declararlas
comoPblicas desde un mdulo de cdigo.
Para insertar un mdulo en nuestro proyecto de Visual Basic
tendremos que marcar en Insert / Module o pulsar sobre el
botn
de la barra de herramientas. Nos aparecer una
ventana en la que nicamente podremos colocar las variables
y procedimientos o funciones que queramos que sean
pblicas para toda la aplicacin.
En el siguiente ejemplo se declara la variable Gen_var de
tipo Integer que ser accesible desde cualquier formulario de
la aplicacin:

Ahora la ventana de proyecto tiene una lnea ms con un


icono distinto indicando que se trata de un mdulo de cdigo:

System.Drawing

Artculos que utilizan clases de este espacio de


nombres
Publicado el 19/Dic/2004
Actualizado el 18/Dic/2004

El espacio de nombres System.Drawing proporciona acceso a funcionalidad de


grficos bsica de GDI+. Se ofrece una funcionalidad ms avanzada en los espacios
de nombres System.Drawing.Drawing2D, System.Drawing.Imaging y
System.Drawing.Text.
La clase Graphics proporciona mtodos para dibujar en el dispositivo de pantalla.
Clases como Rectangle y Point encapsulan primitivos de GDI+. La clase Pen se
utiliza para dibujar lneas y curvas, mientras que las clases derivadas de la clase
abstracta Brush se utilizan para rellenar el interior de formas.

Los tipos que contiene System.Drawing

Nota:
Si sabes de alguna colaboracin o artculo (en este
sitio) que incluya clases de System.Drawing, por
favor comuncamelo indicando la URL de dicho
artculo (o artculos).
Ya sabes, me mandas un mensaje indicando la URL
(pero que sea de mi sitio, no de otros sitios...)
Gracias.

Los artculos publicados que utilizan algunas de las


clases del espacio de nombres System.Drawing

...

Contenido de System.Drawing
Las clases, interfaces, estructuras, delegados y enumeraciones que contiene este
espacio de nombres (segn la documentacin de Visual Studio .NET)
Pulsa aqu si quieres ver la informacin (en Internet) de este espacio de nombres.

Clases:

Bitmap Encapsula un mapa de bits de GDI+, formado por los datos


de pxel de una imagen de grficos y sus atributos. Un objeto Bitmap
es un objeto utilizado para trabajar con imgenes definidas por datos
de pxel.
Brush Las clases derivadas de esta clase base abstracta definen
objetos utilizados para rellenar el interior de formas grficas, como
rectngulos, elipses, grficos circulares, polgonos y rutas.
Brushes Pinceles de todos los colores estndar. No se puede heredar
esta clase.
ColorConverter Convierte colores de un tipo de datos a otro. Se
tiene acceso a esta clase mediante TypeDescriptor.
ColorTranslator Convierte colores a y de estructuras Color GDI+.
No se puede heredar esta clase.
Font Define un formato concreto para el texto, incluidos el nombre
de fuente, el tamao y los atributos de estilo. No se puede heredar
esta clase.
FontConverter Convierte objetos Font de un tipo de datos en otro.
Se tiene acceso a la clase FontConverter mediante el objeto
TypeDescriptor.
FontFamily Define un grupo de tipos de letra que tienen un diseo
bsico parecido y algunas diferencias de estilo. No se puede heredar
esta clase.
Graphics Encapsula una superficie de dibujo GDI+. No se puede
heredar esta clase.
Icon Representa un icono de Windows, que es una pequea imagen
de mapa de bits utilizada para representar un objeto. Los iconos se
pueden considerar como mapas de bits transparentes, aunque su
tamao lo determina el sistema.
IconConverter Convierte objetos Icon de un tipo de datos en otro.
Se tiene acceso a esta clase mediante el objeto TypeDescriptor.
Image Clase base abstracta que proporciona funcionalidad para las
clases descendentes Bitmap y Metafile.
ImageAnimator Da animacin a una imagen que tiene marcos
basados en tiempo.

ImageConverter ImageConverter es una clase que se puede utilizar


para convertir objetos Image de un tipo de datos a otro. Se tiene
acceso a esta clase mediante el objeto TypeDescriptor.
ImageFormatConverter ImageFormatConverter es una clase que
se puede utilizar para convertir colores de un tipo de datos a otro. Se
tiene acceso a esta clase mediante el objeto TypeDescriptor.
Pen Define un objeto utilizado para dibujar lneas y curvas. No se
puede heredar esta clase.
Pens Lpices de todos los colores estndar. No se puede heredar
esta clase.
PointConverter Convierte objetos Point de un tipo de datos en otro.
Se tiene acceso a esta clase mediante el objeto TypeDescriptor.
RectangleConverter Convierte rectngulos de un tipo en otro tipo.
Se tiene acceso a esta clase mediante TypeDescriptor.
Region Describe el interior de una forma grfica formada por
rectngulos y rutas. No se puede heredar esta clase.
SizeConverter SizeConverter es una clase que se utiliza para
convertir un tipo de datos en otro. Se tiene acceso a esta clase
mediante el objeto TypeDescriptor.
SolidBrush Define un pincel de un solo color. Los pinceles se utilizan
para rellenar formas de grficos, por ejemplo rectngulos, elipses,
grficos circulares y rutas. No se puede heredar esta clase.
StringFormat Encapsula informacin de diseo del texto (como
interlineado y alineacin), manipulaciones de presentacin (como
insercin de puntos suspensivos y sustitucin de dgitos nacional) y
caractersticas de OpenType. No se puede heredar esta clase.
SystemBrushes Cada una de las propiedades de la clase
SystemBrushes es un objeto SolidBrush que es el color de un
elemento de presentacin de Windows.
SystemColors Cada una de las propiedades de la clase
SystemColors es una estructura Color que es el color de un elemento
de presentacin de Windows.
SystemIcons Cada una de las propiedades de la clase SystemIcons
es un objeto Icon de los iconos de todo del sistema de Windows. No
se puede heredar esta clase.
SystemPens Cada una de las propiedades de la clase SystemPens es
un objeto Pen que es el color de un elemento de presentacin de
Windows y es un ancho de 1.
TextureBrush Cada una de las propiedades de la clase TextureBrush
es un objeto Brush que utiliza una imagen para rellenar el interior de
una forma. No se puede heredar esta clase.
ToolboxBitmapAttribute Se puede aplicar un objeto
ToolboxBitmapAttribute a un control de manera que los
contenedores, como el Diseador de formularios de Microsoft Visual
Studio, puedan recuperar un icono que represente el control. El mapa
de bits del icono puede encontrarse en un archivo por s solo o
incrustado en el ensamblado que contiene el control.
El tamao del mapa de bits que se incrusta en el ensamblado del
control (o que se almacena en un archivo independiente) debe ser de
16 por 16. El mtodo GetImage de un objeto ToolboxBitmapAttribute
puede devolver la imagen pequea de 16 por 16 o una imagen
grande de 32 por 32 creada mediante un ajuste de escala de la
imagen pequea.

Estructuras:

CharacterRange Especifica un intervalo de posiciones de caracteres


en una cadena.
Color Representa un color ARGB.
Point Representa un par ordenado de coordenadas x e y de enteros
que define un punto en un plano bidimensional.
PointF Representa un par ordenado de coordenadas x e y de punto
flotante que define un punto en un plano bidimensional.
Rectangle Almacena un conjunto de cuatro enteros que representan
la posicin y tamao de un rectngulo. Para las funciones de regin
ms avanzadas, utilice un objeto Region.
RectangleF Almacena un conjunto de cuatro nmeros de punto
flotante que representan la posicin y tamao de un rectngulo. Para
las funciones de regin ms avanzadas, utilice un objeto Region.
Size Almacena un par de enteros ordenados, normalmente el ancho
y el alto de un rectngulo.
SizeF Almacena un par de nmeros de punto flotante ordenados,
normalmente el ancho y el alto de un rectngulo.

Delegados:

Graphics.DrawImageAbort Proporciona un mtodo de devolucin


de llamada para decidir cundo el mtodo DrawImage debe cancelar
anticipadamente la ejecucin y dejar de dibujar una imagen.
Graphics.EnumerateMetafileProc Proporciona un mtodo de
devolucin de llamada al mtodo EnumerateMetafile.
Image.GetThumbnailImageAbort Proporciona un mtodo de
devolucin de llamada para decidir cundo el mtodo
GetThumbnailImage debe cancelar anticipadamente la ejecucin.

Enumeraciones:

ContentAlignment Especifica la alineacin del contenido en la


superficie de dibujo.
FontStyle Especifica la informacin de estilo que se aplica al texto.
GraphicsUnit Especifica la unidad de medida de unos datos
concretos.
KnownColor Especifica los colores del sistema conocidos.
RotateFlipType Especifica la direccin de giro de una imagen y el
eje que se utiliza para voltearla.
StringAlignment Determina la alineacin de una cadena de texto en
relacin con el rectngulo de diseo correspondiente.
StringDigitSubstitute La enumeracin StringDigitSubstitute
especifica cmo sustituir los dgitos de una cadena segn la
configuracin regional o el idioma del usuario.
StringFormatFlags Especifica la informacin de diseo y de
presentacin de las cadenas de texto.
StringTrimming Especifica cmo recortar los caracteres de una
cadena que no caben por completo en una forma de diseo.

StringUnit Especifica la unidad de medida de una cadena de texto.