23
CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Embed Size (px)

Citation preview

Page 1: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge AlbertoGuevara Salinas, Christian ÁlvaroFlor Rodríguez, AlbertoVera Morales, Julio Cesar

Page 2: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

CONEXIONES USANDO DAO

Un Objeto de Acceso a Datos, Data Access Objeto (DAO) es un componente que proveen un interfaz común entre una aplicación y uno o más dispositivos de almacenamiento de datos.

Los componentes DAO utilizan la tecnología OLE.

Es posible utilizar el motor JET a la hora de acceder a Microsoft SQL Server o a cualquier otra base de datos que disponga de un driver de ODBC, con el mismo código DAO.

Page 3: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Ejemplo usando DAO El siguiente código se utiliza con DAO para abrir una base de datos

ODBC, procesa un query, y devuelve una serie de records. Este código establece una conexión "DSN-less"

sql = "Select * From titles" Set ws = DBEngine.Workspaces(0) Dim cnStr As String cnStr = "driver={SQL

Server};server=mysvr;" & _ "database=pubs;uid=myuid;pwd=mypwd"

Set db = ws.OpenDatabase(Name:="PUBS", Exclusive:=False, _ ReadOnly:=False, Connect:=cnStr)

Set rs = db.OpenRecordset(sql, dbOpenDynaset) rs.MoveLast MsgBox "DAO: " & Str(rs.RecordCount) & " filas devueltas."

Page 4: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

CONEXIONES USANDO RDO

RDO (Objetos de Acceso a Datos Remotos) Con RDO y el control RemoteData, nuestras

aplicaciones pueden acceder a fuentes de datos ODBC sin utilizar un motor local.

Aunque se puede acceder a cualquier fuente de datos ODBC con RDO y el control de Acceso Remoto, donde conseguiremos el mayor rendimiento será cuando trabajemos con servidores de bases de datos, como Microsoft SQL Server.

Empleando RDO, podemos trabajar con todo tipo de cursores desde los más simples a los más complejos.

Page 5: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Podemos ejecutar querys que devuelvan cualquier número de resultados, o ejecutar procedimientos almacenados que devuelvan resultados con o sin parámetros y valores de retorno.

Podemos limitar el número de filas que se devuelven, y monitorizar todos los mensajes y errores generados por la fuente de datos remota sin que esto afecte a la query que se está ejecutando.

RDO permite operaciones tanto síncronas como asíncronas, por lo que nuestra aplicación no queda bloqueada mientras se ejecutan largas querys.

Page 6: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

DIFERENCIAS ENTRE ADO Y RDO

El modelo DAO se emplea con bases de datos ISAM, Access y ODBC databases. El modelo RDO se halla diseñado únicamente para bases de datos ODBC, y ha sido optimado para su uso contra Microsoft SQL Server 6.0 y Oracle.

El modelo RDO puede tener mayor rendimiento, ya que todo el proceso se lleva a cabo en el servidor y no en nuestra máquina. Con el modelo DAO parte del proceso se lleva a cabo en nuestra máquina local por lo que con este modelo, el rendimiento puede no ser tan bueno.

Page 7: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

El modelo DAO emplea el motor del Jet. Sin embargo, el RDO no emplea el motor del JET, sino el motor ODBC del servidor.

El modelo RDO es capaz de llevar a cabo querys síncronas o asíncronas. El DAO tiene limitaciones a la hora de ejecutar este tipo de querys.

El modelo RDO puede trabajar con cursores complejos, los cuales se encuentran limitados en el DAO.

Page 8: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Ejemplo usando RDO 'El siguiente código se utiliza con DAO para abrir una base de datos ODBC,

procesa un query asíncrona, y devuelve una serie de records. Este código establece una conexión "DSN-less"

Dim sql As String sql = "Select * From titles" Set en = rdoEngine.rdoEnvironments(0) With en .CursorDriver = rdUseOdbc End With Dim cnStr As String cnStr = "driver={SQL Server};server=mysvr;" & _database=pubs;uid=myuid;pwd=mypwd"Set cn = en.OpenConnection(DSName:="", _ Prompt:=rdDriverNoPrompt,

Connect:=cnStr)Set rs = cn.OpenResultset(Name:=sql, Type:=rdOpenKeyset, _ Option:=rdAsyncEnable) While rs.StillExecuting DoEvents Wend rs.MoveLast MsgBox "RDO: " & Str(rs.RowCount) & " filas devueltas." rs.Close

Page 9: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

CONEXIONES USANDO ADO ADO es un intermediario entre el programa y la base de

datos. Usando ADO, el programa se comunica con la base de

datos, consulta, edita, inserta, borra, registros, añade tablas, etc.

ADO a su vez se comunica con la base de datos a través de un “proveedor de datos”

Principales componentes de ADO Connection (Permite establecer una conexión con la base de

datos) Recordset (Maneja un conjunto de records de la base de datos) Command (Permite enviar órdenes SQL para ser ejecutados por

la base de datos)

Page 10: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Private cnn As ADODB.ConnectionPrivate rst As ADODB.RecordsetPrivate Sub cmdAbrir_Click()Dim tField As ADODB.Field

'Creando los objetos conexión y recordsetSet cnn = New ADODB.ConnectionSet rst = New ADODB.Recordset

'Abriendo la base usando las credenciales de Windowscnn.Open "Provider=SQLOLEDB; " & _"Initial Catalog=pubs; " & _"Data Source=(local)\NETSDK; " & _ "integrated security=SSPI; persist security info=True;"

'Abriendo el recordset indicando la tabla a la que queremos accederrst.Open "SELECT * FROM authors", cnn, adOpenDynamic, adLockOptimistic

‘Asignando los nombres de los campos al comboWith cboCampos.Clear

‘Cerrando el recordset y la conexiónrst.Closecnn.CloseEnd Sub

Page 11: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

CONEXIONES USANDO ADO.NET

ADO.NET es una evolución del modelo de acceso a datos de ADO que controla directamente los requisitos del usuario para programar aplicaciones escalables. Se diseñó específicamente para el Web, teniendo en cuenta la escalabilidad, la independencia y el estándar XML.

Page 12: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

ADO.NET utiliza algunos objetos ADO, como Connection y Command, y también agrega objetos nuevos. Algunos de los nuevos objetos clave de ADO.NET son DataSet, DataReader y DataAdapter.

La diferencia 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, hay tablas, columnas, relaciones, restricciones, vistas, etc.

Page 13: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

El objeto DataAdapter es el objeto que se conecta a la base de datos para llenar el objeto DataSet.

En el pasado, el procesamiento de datos se basaba principalmente en la conexión. 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 información.

En el centro de este enfoque se sitúa el objeto DataAdapter, que proporciona un puente entre un objeto DataSet y un almacén de datos de origen para recuperar y guardar datos. Para ello, envía solicitudes a los comandos SQL apropiados que se ejecutan en el almacén de datos.

Page 14: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar
Page 15: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Objetos Usados en las conexiones La conexión a SQl Server la realizaremos con el objeto

SqlConnection del espacio de nombre System.Data.SqlClient.

.NET framework proporciona varios objetos Connection, uno para cada tipo de espacio de nombres.

De este modo para OleDb existe un objeto OleDbConnection del espacio de nombre System.Data.OleDb y para ODBC existe un OdbcConnection del espacio de nombres System.Data.Odbc si utilizamos .NET Framework 1.1 o del espacio de nombres Microsoft.Data.Odbc si utilizamos la versión 1.0.

Page 16: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar
Page 17: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

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.

Objetos DataReader. Proporcionan una forma de leer una secuencia de registros de datos sólo hacia delante desde un origen de datos SQL Server.

Page 18: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

EJEMPLO DE CONEXIÓN VB Y SQL SERVER

1.-Crear objetos de ADO.NET 'Crear objetos de ADO.NET.

Private myConn As SqlConnection

Private myCmd As SqlCommand

Private myReader As SqlDataReader

Private results As String

El objeto SqlConnection establece una conexión de base de datos, el objeto SqlCommand ejecuta una consulta a la base de datos y el objeto SqlDataReader recupera los resultados de la consulta.

Page 19: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

2.-Utilizar el objeto SqlConnection para abrir la conexión de SQL Server Para configurar la cadena de conexión del objeto

SqlConnection, ‘Crear un objeto Connection.

myConn = New SqlConnection("Initial Catalog=Northwind;" & _ "Data Source=localhost;Integrated Security=SSPI;")

‘Crear un objeto Command.myCmd = myConn.CreateCommand myCmd.CommandText = "SELECT FirstName, LastName

FROM Employees"

'Abrir la conexión. myConn.Open()

Page 20: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

3.-Utilizar el objeto SqlDataReader para recuperar datos de SQL Server

myReader = myCmd.ExecuteReader()Cuando se ejecuta el método myCmd.ExecuteReader,

SqlCommand recupera dos campos de la tabla y crea un objeto SqlDataReader.

'Concatenar el resultado de la consulta en una cadena.Do While myReader.Read()results = results & myReader.GetString(0) & vbTab & _ myReader.GetString(1) & vbLf Loop

'Mostrar resultados. MsgBox(results)

El método myReader.Read devuelve un valor booleano, que indica si hay más registros que se puedan leer. Los resultados de la consulta SQL se muestran en un cuadro de mensaje.

Cerrar los objetos SqlDataReader y SqlConnection: 'Cerrar el lector y la conexión de base de datos.

myReader.Close()myConn.Close()

Page 21: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Conclusiones El modelo RDO puede tener mayor

rendimiento, ya que todo el proceso se lleva a cabo en el servidor y no en nuestra máquina. Con el modelo DAO parte del proceso se lleva a cabo en nuestra máquina local por lo que con este modelo, el rendimiento puede no ser tan bueno.

Page 22: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Conclusiones

Aunque se puede acceder a cualquier fuente de datos ODBC con RDO y el control de Acceso Remoto, donde conseguiremos el mayor rendimiento será cuando trabajemos con servidores de bases de datos, como Microsoft SQL Server.

Page 23: CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge Alberto Guevara Salinas, Christian Álvaro Flor Rodríguez, Alberto Vera Morales, Julio Cesar

Conclusiones

Usando DAO, RDO, ADO Y ADO.NET, el programa se comunica con la base de datos, consulta, edita, inserta, borra, registros, añade tablas, etc.

Tenemos 4 tipos importantes en la conexión entre VB y SQL Server que son DAO, RDO y ADO. Y su evolución ADO.NET