Sunteți pe pagina 1din 32

Acceso a Bases de Datos con Visual Basic .NET (ADO.

NET)

Agenda

La Arquitectura ADO .NET


Modo Conectado

Ejecutando instrucciones SQL Stored Procedures Transacciones

Modo Desconectado

El DataSet y el DataAdapter Leyendo y Actualizando Datos Relaciones de Datos Sorteando y Filtrando


2

Acceso a Bases de Datos

Filosofa ADO. NET

Clases de Datos

Contenedores de datos

no saben nada de como obtener los datos de la BD DataSet = Desconectado y cach en memoria

Objeto Clave :

Clases de Base de Datos


Para leer y escribir datos en las fuentes de datos Proveedores Manejados SQL Server , OLEDB, Oracle y Odbc Objetos Claves :

Connection = Se conecta a la fuentes de datos Command = Ejecuta querys y stored procedures DataAdapter = Conecta DataSet a la base de datos DataReader = Cursor Forward/only y read/only
3

Acceso a Bases de Datos

Arquitectura ADO .Net

Acceso a Bases de Datos

ADO ADO .NET


ADO evoluciona hacia ADO .NET

RecordSet

DataReader DataAdapter DataSet

Command

Command Connection
5

Connection
Acceso a Bases de Datos

Objetos provistos por distintos proveedores de datos .NET


Objetos Proposito proveedores de .Net Connection Provee conectividad a un origen de datos Command Provee acceso a comandos de Base de Datos como Select, Delete, Insert y Update DataReader DataAdapter Provee acceso a datos de solo lectura. Utiliza el objeto Connection para enlazar un objeto DataSet con un Proveedor de Datos. Tambin permite actualizar los Datos en el origen a partir de las modificaciones hechas en el DataSet. Objetos SQL Server
SqlConnection SqlCommand

SqlDataReader SqlDataAdapter

Acceso a Bases de Datos

Agenda

La Arquitectura ADO .NET


Modo Conectado

Ejecutando

instrucciones SQL

Stored Procedures Transacciones El DataSet y el DataAdapter Leyendo y Actualizando Datos Relaciones de Datos Sorteando y Filtrando
7

Modo Desconectado

Acceso a Bases de Datos

Conectndose a la Base de Datos


Escoja el proveedor de datos

Sql, Oracle, Oledb, Odbc (XXX)

Especifique la cadena de conexin Cree el objeto tipo XXXConnection Abra la conexin


Dim CadCon As String = DataSource=LIMASERVER; Initial Catalog=banco; Integrated Security=true Dim Cn As New SqlConnection(CadCon) Cn.Open() .. Cn.Close()

Acceso a Bases de Datos

Ejecutando instrucciones SQL

Para ejecutar actualizaciones e instrucciones create

Dim Strqry As String = update productos set prec=prec*2 Dim Cmd As New SqlCommand(Strqry, Cn) Dim Nfilas As Integer = Cmd.ExecuteNonQuery()

Consultas de un valor

(1ra columna de 1ra fila resultante)

Dim Strqry As String = select count(*) from clientes Dim Cmd As New SqlCommand(Strqry, Cn) Dim Ncli As Integer = Ctype(Cmd.ExecuteScalar(),Integer)

Acceso a Bases de Datos

El Objeto DataReader

DataReader provee flujo de datos forwardonly y read-only

Representa resultados de un select No soporta scrolling ni actualizaciones

Se genera con Command.ExecuteReader

Dim Strqry As String = select nombre from contactos Dim Cmd As New SqlCommand(Strqry, Cn) Dim Dr As SqlDataReader = cmd.ExecuteReader() While Dr.Read() Console.WriteLine(Dr.GetString(0)) End While Dr.Close()

Acceso a Bases de Datos

10

Agenda

La Arquitectura ADO .NET


Modo Conectado

Ejecutando instrucciones SQL

Stored

Procedures

Transacciones El DataSet y el DataAdapter Leyendo y Actualizando Datos Relaciones de Datos Sorteando y Filtrando
11

Modo Desconectado

Acceso a Bases de Datos

Trabajando con Stored Procedures


Creando

un SP con Visual Studio .NET

En el men View, haga click en el Server Explorer o presione Ctrl+Alt+S Crear una conexin de datos Haga Click en New Stored Procedure Insertar el SQL

Creado

el objeto Command

El cual se crea automticamente arrastrando y pegando el SP al Form

cmLogin.CommandText = "dbo.[AuthenticateUser] cmLogin.CommandType = _ System.Data.CommandType.StoredProcedure cmLogin.Connection = Me.cnTaskVision


Acceso a Bases de Datos 12

Qu son los Parmetros de Comandos?


Las

sentencias SQL y los stored procedures pueden tener parmetros de entrada y salida, y un valor de retorno Tienen las Propiedades :

ParameterName, DbType, Size, Direction

cmLogin.Parameters.Add( _ New System.Data.SqlClient.SqlParameter("@UserName", _ System.Data.SqlDbType.VarChar, 16))


cmLogin.Parameters.Add( _ New System.Data.SqlClient.SqlParameter("@Password", _ System.Data.SqlDbType.VarChar, 16))

Acceso a Bases de Datos

13

Ejecutando el Store Procedure


Se

dan valores a los parmetros de entrada Se ejecutan con el mtodo ExecuteNonQuery o ExecuteScalar
cmLogin.Parameters("@UserName").Value = txtUsuario.Text cmLogin.Parameters("@Password").Value = txtPassword.Text cnTaskVision.Open() UserID = CType(cmLogin.ExecuteScalar(), Integer) cnTaskVision.Close()

Acceso a Bases de Datos

14

Agenda

La Arquitectura ADO .NET


Modo Conectado

Ejecutando instrucciones SQL Stored Procedures

Transacciones

Modo Desconectado

El DataSet y el DataAdapter Leyendo y Actualizando Datos Relaciones de Datos Sorteando y Filtrando


15

Acceso a Bases de Datos

Transacciones

Una transaccin es un conjunto de tareas relacionadas que tienen xito o fallan como una unidad Se pueden manejar en la capa de base de datos usando sentencias SQL

BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS

O mediante ADO.NET en la capa intermedia

Acceso a Bases de Datos

16

Transacciones con ADO.NET


Dim myTransaction As System.Data.OleDb.OleDbTransaction Try myConnection.Open() myTransaction = myConnection.BeginTransaction Update1.Transaction = myTransaction Update2.Transaction = myTransaction Update1.ExecuteNonQuery() Update2.ExecuteNonQuery() myTransaction.Commit() Catch ex As Exception myTransaction.Rollback() Finally myConnection.Close() End Try

Acceso a Bases de Datos

17

Agenda

La Arquitectura ADO .NET


Modo Conectado

Ejecutando instrucciones SQL Stored Procedures Transacciones

Modo Desconectado

El

DataSet y el DataAdapter

Leyendo y Actualizando Datos Relaciones de Datos Sorteando y Filtrando


18

Acceso a Bases de Datos

El Objeto DataSet

Parecido al ADO RecordSet, pero mas rico Vistas Relacionales de data

DataSet Tables Table Columns Column Constraints


Constraint

Contiene tablas, columnas, filas, constraints, vistas y relaciones No conoce de fuentes de datos Indexamiento tipo array Soporta Databinding Soporta actualizaciones batch Se conecta a fuente de datos via DataAdapter

Modelo Desconectado

Rows Row Relations Relation

Acceso a Bases de Datos

19

El DataAdapter

Sirve de interfase entre una tabla y un Datatable Provee mapeo entre tablas y columnas Las instrucciones en sus objetos Command las puede generar automticamente un wizard Usuarios pueden proveer comandos explcitos de insert/update/delete

DataAdapter
Connection Connection SelectCommand SelectCommand

UpdateCommand
InsertCommand InsertCommand DeleteCommand DeleteCommand

Tales como especificar stored procedures

TableMappings
20

Acceso a Bases de Datos

Trabajando con DataSets y DataAdapters


DataSet DataTable Fill DataAdapter Data Source

Update

DataTable
Fill

DataAdapter

Update

Acceso a Bases de Datos

21

Agenda

La Arquitectura ADO .NET


Modo Conectado

Ejecutando instrucciones SQL Stored Procedures Transacciones

Modo Desconectado

El DataSet y el DataAdapter

Leyendo

y Actualizando Datos
22

Relaciones de Datos Sorteando y Filtrando

Acceso a Bases de Datos

Llenando de Datos un DataSet

El mtodo Fill ejecuta las instrucciones de SelectCommand sobre la conexin y llena el DataTable La conexin es abierta slo para recuperar los datos y es cerrada nuevamente Al pasarle un select al constructor automticamente se asigna al SelectCommand
Dim Strqry As String = select * from clientes Dim Da As New SqlAdapter(Strqry, Cn) Dim Ds As New DataSet() Da.Fill( Ds.Tables(Clientes) )

Acceso a Bases de Datos

23

Actualizando los Datos en el DataSet

Aadiendo filas
Dim Nr As DataRow = Ds.Tables(Clientes).NewRow Nr(Nombre)=Daniel Carvajal" Ds.Tables(Clientes).Rows.Add(Nr)

Actualizando filas
Dim Cr As DataRow = Ds.Tables(Clientes).Rows(9) Cr.BeginEdit() Cr(Nombre)=Daniel Carbajal" Cr.EndEdit()

Borrando filas
Ds.Tables(Clientes).Rows(9).Delete()

Acceso a Bases de Datos

24

Actualizando los Cambios en la BD

Con el mtodo Update del DataAdapter :


Da.Update( Ds.Tables(Clientes) )

Con este mtodo se detectan los cambios y se disparan los respectivos InsertCommand, UpdateCommand y DeleteCommand del DataAdapter Estos objetos Command se pueden generar automticamente por un objeto de la clase SqlCommandBuilder

Dim Cmd As SqlCommandBuilder = New SqlCommandBuilder(Da)


Acceso a Bases de Datos 25

Agenda

La Arquitectura ADO .NET


Modo Conectado

Ejecutando instrucciones SQL Stored Procedures Transacciones

Modo Desconectado

El DataSet y el DataAdapter Leyendo y Actualizando Datos

Relaciones

Acceso a Bases de Datos

de Datos
26

Sorteando y Filtrando

Restricciones de Clave Fornea


Permite

la Integridad Referencial

Si la propiedad EnforceConstraints del DataSet es True La tabla padre tener clave primaria Se aade la clave fornea a la tabla hija

Tiene

propiedades DeleteRule y UpdateRule

Cascade, SetNull, SetDefault, None

Dim fkcCustomersOrders As New ForeignKeyConstraint( _ FK_CustomersOrders, _ dtCustomers.Columns(CustomerID), _ dtOrders.Columns(CustomerID)) fkcCustomersOrders.DeleteRule = Rule.None dtOrders.Constraints.Add(fkcCustomersOrders)
Acceso a Bases de Datos 27

Qu es un objeto DataRelation?

Define una relacin de navegacin, NO una relacin de restriccin Tiene un parmetro que permite crear tambin una restriccin de clave fornea Lo usan los objetos de presentacin para mostrar a las filas hijas relacionadas y para calcular agregados en columnas de expresin
dsNorthwind.Relations.Add(FK_CustomersOrders", _ dtCustomers.Columns("CustomerID"), _ dtOrders.Columns("CustomerID"), _ True) Crea tambien la FK

Acceso a Bases de Datos

28

Navegando entre DataTables relacionadas

Se usa el mtodo GetChildRows de la DataRow

Se le pasa el nombre de una DataRelation como parmetro

Dim drCustomer As DataRow Dim drOrder As DataRow For Each drCustomer In _ dsNorthwind.Tables("Customer").Rows For Each drOrder In drCustomer.GetChildRows( _ "FK_CustomersOrders") procesar fila Next Next

Acceso a Bases de Datos

29

Agenda

La Arquitectura ADO .NET


Modo Conectado

Ejecutando instrucciones SQL Stored Procedures Transacciones

Modo Desconectado

El DataSet y el DataAdapter Leyendo y Actualizando Datos Relaciones de Datos

Sorteando
Acceso a Bases de Datos

y Filtrando
30

El Mtodo Select del DataTable


Obtiene

un arreglo de objetos DataRow que concuerdan con el filtro en el orden del sort y con un estado especfico

Dim selRows As DataRow() = _ dtCustomers.Select(City=London, _ CompanyName ASC, DataViewRowState.Deleted) Dim row As DataRow For Each row In SelRows MessageBox.Show(Nombre Compaa: , _ row(CompanyName, DataRowVersion.Original)) Next

Acceso a Bases de Datos

31

Trabajando con DataViews

Similar a las Vistas en SQL, representan un subconjunto de datos de un DataTable Los DataViews permiten ordenacin y filtrado de datos en tiempo de diseo No puede abarcar varios DataTables Los DataTable tienen la propiedad DefaultView
Dim dvProducts As New _ DataView(dsNorthwind.Tables("Products")) dvProducts.Sort = "UnitPrice dvProducts.RowFilter = "CategoryID > 4 grdProducts.DataSource = dvProducts

Acceso a Bases de Datos

32

S-ar putea să vă placă și