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

Embed Size (px)

Citation preview

CONEXIONES VISUAL BASIC Y SQL SERVER Duran Márquez, Jorge AlbertoGuevara Salinas, Christian ÁlvaroFlor Rodríguez, AlbertoVera 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.

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."

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.

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.

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.

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.

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

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)

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

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.

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.

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.

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.

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.

EJEMPLO DE CONEXIÓN VB Y SQL SERVER1.-Crear objetos de ADO.NET

'Crear objetos de ADO.NET. Private myConn As SqlConnection Private myCmd As SqlCommandPrivate 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.

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()

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()

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.

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.

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