ado.net
ado.net
NET
HERRAM IEN TAS AVANZADAS DE DISEÑO DE
SOFTWARE
2007-2008
A D O. N E T
¿EN QUÉ CONSISTEN LOS MODOS (DE ACCESO A ORÍGENES DE DATOS) CONECTADO Y
DESCONECTADO? 3
¿EN QUÉ CONSISTEN LOS OBJETOS CONNECTION, COMMAND Y TRANSACTION, PARA QUÉ
SE USAN? 3
OBJETO CONNECTION 3
PROPIEDADES 4
METODOS 4
OBJETO COMMAND 5
OBJETO TRANSACTION 7
DESCRIBIR BREVEMENTE LA SEMÁNTICA DE ESTOS LOS MÉTODOS Y EXPLICAR PARA QUÈ SE UTILIZAN: 10
EXECUTENONQUERY 10
SINTAXIS 10
EJEMPLO EXECUTENONQUERY VB 10
EXECUTESCALAR 11
SINTAXIS 11
EJEMPLO EXECUTESCALAR VB 11
EXECUTEREADER 12
SINTAXIS 12
EJEMPLO EXECUTEREADER 12
EJEMPLO EXECUTEREADER CON STOREDPROCEDURE 13
RESUMEN: 13
MODO DESCONECTADO
3
¿EN QUÉ CONSISTEN LOS OBJETOS CONNECTION, COMMAND Y
T R A N S A C T I O N , PA R A Q U É SE U S A N ?
OBJETO CONNECTION
PROPIEDADES
ConnectionString
Ejemplo:
Mode
Ejemplo:
4
METODOS
BeginTrans
Ejemplo:
Close
Cierra el objeto
Ejemplo:
CommitTrans
Ejemplo:
Execute
Ejemplo:
Open
5
Ejemplo:
RollBackTrans
Ejemplo:
OBJETO COMMAND
Propiedades públicas
Nombre Descripción
CommandText Obtiene o establece el comando de texto que se debe
ejecutar en el origen de datos.
CommandTime Obtiene o establece el tiempo de espera antes de
out terminar el intento de ejecutar un comando y generar
un error.
CommandType Indica o especifica cómo se interpreta la propiedad
CommandText.
Connection Obtiene o establece el objeto DbConnection que utiliza
este DbCommand.
Container Obtiene IContainer que contiene Component.(Se
6
hereda de Component).
DesignTimeVisi Obtiene o establece un valor que indica si el objeto de
ble comando debe estar visible en un control de interfaz
personalizado.
Parameters Obtiene la colección de objetos DbParameter.
Site Obtiene o establece ISite de Component.(Se hereda de
Component).
Transaction Obtiene o establece la transacción DbTransaction en
la que se ejecuta este objeto DbCommand.
UpdatedRowSo Obtiene o establece cómo se aplican los resultados de
urce un comando al objeto DataRow cuando lo utiliza el
método Update de un objeto DbDataAdapter.
Métodos públicos
Nombre Descripción
Cancel Intenta cancelar la ejecución de un objeto
DbCommand.
CreateObjRef Crea un objeto que contiene toda la información
relevante necesaria para generar un proxy
utilizado para comunicarse con un objeto remoto.
(Se hereda de MarshalByRefObject).
CreateParameter Crea una nueva instancia de un objeto
DbParameter.
Dispose Sobrecargado. Libera los recursos utilizados por
el objeto Component. (Se hereda de Component).
Equals Sobrecargado. Determina si dos instancias de
Object son iguales. (Se hereda de Object).
ExecuteNonQuery Ejecuta una instrucción SQL en un objeto de
conexión.
ExecuteReader Sobrecargado. Ejecuta CommandText en
Connection y devuelve un objeto DbDataReader.
ExecuteScalar Ejecuta la consulta y devuelve la primera columna
de la primera fila del conjunto de resultados que
devuelve la consulta. Se omiten todas las demás
columnas y filas.
GetHashCode Sirve como función hash para un tipo concreto.
GetHashCode es apropiado para su utilización en
algoritmos de hash y en estructuras de datos
como las tablas hash. (Se hereda de Object).
GetLifetimeServic Recupera el objeto de servicio de duración actual
e que controla la directiva de duración de esta
instancia. (Se hereda de MarshalByRefObject).
GetType Obtiene el objeto Type de la instancia actual. (Se
hereda de Object).
InitializeLifetimeS Obtiene un objeto de servicio de duración para
ervice controlar la directiva de duración de esta
instancia. (Se hereda de MarshalByRefObject).
Prepare Crea una versión preparada (o compilada) del
7
comando en el origen de datos.
ReferenceEquals Determina si las instancias de Object
especificadas son la misma instancia. (Se hereda
de Object).
ToString Devuelve un objeto String que contiene el nombre
del objeto Component, en caso de que exista. Este
método no debe reemplazarse. (Se hereda de
Component).
OBJETO TRANSACTION
Constructores
Nombre Descripción
DbTransaction Inicializa un nuevo objeto DbTransaction.
Métodos
Nombre Descripción
Commit Confirma la transacción de base de datos.
Crea un objeto que contiene toda la información
relevante necesaria para generar un proxy utilizado
CreateObjRef
para comunicarse con un objeto remoto. (Se hereda de
MarshalByRefObject).
Sobrecargado. Libera los recursos no administrados
Dispose que utiliza DbTransaction y, opcionalmente, libera los
recursos administrados.
Equals Determina si el objeto Object especificado es igual al
8
objeto Object actual. (Se hereda de Object).
Permite que un objeto Object intente liberar recursos y
realizar otras operaciones de limpieza antes de que el
Finalize
objeto Object sea reclamado por el recolector de
elementos no utilizados. (Se hereda de Object).
Actúa como función hash para un tipo concreto. (Se
GetHashCode
hereda de Object).
Recupera el objeto de servicio de duración actual que
GetLifetimeServic
controla la directiva de duración de esta instancia. (Se
e
hereda de MarshalByRefObject).
Obtiene el objeto Type de la instancia actual. (Se
GetType
hereda de Object).
Obtiene un objeto de servicio de duración para
InitializeLifetimeS
controlar la directiva de duración de esta instancia. (Se
ervice
hereda de MarshalByRefObject).
MemberwiseClone Sobrecargado.
Rollback Deshace una transacción desde un estado pendiente.
Devuelve una clase String que representa la clase
ToString
Object actual. (Se hereda de Object).
Propiedades
Nombre Descripción
Especifica el objeto DbConnection asociado a
Connection
la transacción.
DbConnecti Especifica el objeto DbConnection asociado a
on la transacción.
IsolationLe Especifica IsolationLevel para esta
vel transacción.
Nombre Descripción
Obtiene el objeto DbConnection asociado a la
IDbTransaction..::.Co
transacción, o una referencia nula si la transacción
nnection
ya no es válida.
9
BeginTransaction devuelve una referencia a Transaction. Esta
referencia se asigna a los objetos Command inscritos en la
transacción.
2. El objeto Transaction se asigna a la propiedad Transaction del
Command que se desea ejecutar. Si se ejecuta un comando
(Command) en una conexión (Connection) que tiene una
transacción (Transaction) activa y no se ha asignado el objeto
Transaction a la propiedad Transaction del objeto Command, se
inicia una excepción.
3. A continuación se ejecutan los comandos deseados.
4. Finalmente se llama al método Commit del objeto Transaction
para completar la transacción o al método Rollback para
cancelarla.
Try
myCommand.CommandText = "Insert into Region (RegionID,
RegionDescription) VALUES (100, 'Description')"
myCommand.ExecuteNonQuery()
myCommand.CommandText = "Insert into Region (RegionID,
RegionDescription) VALUES (101, 'Description')"
myCommand.ExecuteNonQuery()
myTrans.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
Try
myTrans.Rollback()
Catch ex As SqlException
If Not myTrans.Connection Is Nothing Then
Console.WriteLine("An exception of type " &
ex.GetType().ToString() & _
" was encountered while attempting to roll
back the Transaction.")
End If
End Try
10
E X E C U T E N O N Q U E RY , E X E C U T E S C A L A R , E X E C U T E R E A DE R
EXECUTENONQUERY
SINTAXIS
EJEMPLO EXECUTENONQUERY VB
cmd.Parameters.Add("@cuantos", SqlDbType.Int)
cmd.Parameters.Add("@hastaMesActual", SqlDbType.Bit)
11
cmd.Parameters("@cuantos").Value =
CInt(Me.txtCuantos.Text)
cmd.Parameters("@hastaMesActual").Value =
Me.chkHastaEstemes.Checked
cnn.Open()
cmd.ExecuteNonQuery()
LabelAgregar.Text = "Añadir datos de ejemplo (indica el
número):"
LabelStatus.Text = "Datos añadidos correctamente"
Catch ex As Exception
Me.LabelAgregar.Text = "Error: " & ex.Message
LabelStatus.Text = "ERROR"
Finally
If cnn IsNot Nothing AndAlso cnn.State <>
ConnectionState.Closed Then
cnn.Close()
End If
End Try
EXECUTESCALAR
SINTAXIS
12
SELECT Count(*) FROM Prueba WHERE FechaAlta >=
@Param1
En este caso, el valor devuelto será del tipo Int32 y será el número de
filas que hay en la tabla Prueba de la base de datos indicada en el objeto
Connection (que previamente habremos abierto) que tenga una fecha
igual o superior a la indicada en el parámetro proporcionado a ese
comando. Si no hay ninguna fila que cumpla ese criterio, devolverá cero.
EJEMPLO EXECUTESCALAR VB
Return newProdID
End Function
EXECUTEREADER
SINTAXIS
13
SQL Server 2005, la característica Conjunto de resultados activo múltiple
permite que varias acciones utilicen la misma conexión.
EJEMPLO EXECUTEREADER
nwindConn.Open()
Do While myReader.Read()
Console.WriteLine("{0}, ${1}", myReader.GetString(0),
myReader.GetDecimal(1))
Loop
myReader.Close()
nwindConn.Close()
RESUMEN:
14
Si el usuario espera obtener filas, se invoca al método ExecuteReader
del comando, el cual devuelve registros a un lector de datos. Si ejecuta
un comando UPDATE, INSERT o DELETE, llamará al método
ExecuteNonQuery, el cual devuelve un valor que indica el número de filas
afectadas. Si realiza una función de agregado, como devolver el recuento
de pedidos para un cliente, se llama al método ExecuteScalar.
C L A S E S D ATA R E A DE R Y D ATA A D A P T E R
15
realizar en los datos del objeto DataSet en los datos correspondientes de
la fuente de datos asociada.
Crea un objeto DataSet y a través del método Fill del objeto adpSuppliers
(de tipo DataAdapter) “rellena” dicho DataSet con los datos provenientes
del resultado de la consulta de selección cmdSuppliers, es decir, todos los
registros de la tabla Suppliers.
ds = New DataSet("Suppliers")
adpSuppliers.Fill(ds)
16
Siguiendo con el ejemplo anterior, supongamos que queremos cambiar el
nombre del supplier con id=1001. Para ello creamos un objeto de tipo
DataRow dr que nos permite iterar sobre las filas de la tabla Suppliers y
acceder a sus atributos.
Dim dr As DataRow
For Each dr In ds.Tables("Suppliers").Rows
If dr("ID") = 1001 Then
dr("name") = "pepe"
End If
Next dr
En resumen,
17
C L A S E S D ATATA B LE , D ATA S E T Y D ATAV IE W
18
Si AllowDelete tiene el valor true, puede eliminar filas en
la DataView mediante el método Delete del objeto
DataView o DataRowView y las filas se eliminarán de la
DataTable subyacente. Más tarde puede confirmar o
rechazar las eliminaciones mediante AcceptChanges o
RejectChanges, respectivamente. Cuando AllowDelete
tiene el valor false, se iniciará una excepción si llama al
método Delete del objeto DataView o DataRowView.
http://msdn2.microsoft.com/es-es/library/70k6287b.aspx
Referencias utilizadas:
http://msdn2.microsoft.com/en-
us/library/system.data.dataset(VS.80).aspx
http://msdn2.microsoft.com/en-
us/library/system.data.dataview(VS.71).aspx
http://msdn2.microsoft.com/en-
us/library/system.data.datatable(VS.71).aspx
http://www.beansoftware.com/ASP.NET-Tutorials/DataSet-
DataAdapter.aspx
http://www.asptutor.com/asp/vart.asp?id=2
http://www.elguille.info/colabora/NET2005/perxi_introadonet.htm
19