Está en la página 1de 11

SQLCONNECTION CLASE

Sintaxis: "Declaracin de SqlConnection pblico de clase NotInheritable Hereda DbConnection Implementa ICloneable 'Uso Ejemplo As SqlConnection SqlConnection ICloneable public final class extiende DbConnection implementa

Un objeto SqlConnection representa una sesin nica de datos de SQL Server de origen. Con un sistema de base de datos cliente / servidor, que es equivalente a una conexin de red con el servidor. SqlConnection se utiliza junto con SqlDataAdapter y SqlCommand para aumentar el rendimiento cuando se conecta a una base de datos de Microsoft SQL Server. Para todos los productos de servidor de terceros SQL, y otros OLE DB-los orgenes de datos, el uso OleDbConnection . Cuando se crea una instancia de SqlConnection, todas las propiedades se establecen en sus valores iniciales. Para obtener una lista de estos valores, vea el constructor SqlConnection. Si la conexin SqlConnection est fuera de alcance, que permanece abierta. Por lo tanto, es preciso cerrar explcitamente la conexin llamando a Close o Dispose. Close y Dispose son funcionalmente equivalentes. Si el valor de la agrupacin de conexiones Agrupacin se establece en true o yes, la conexin subyacente se devuelve al grupo de conexiones. Por otro lado, si la agrupacin se establece en false o no, la conexin subyacente al servidor se cierra realmente. Para garantizar que las conexiones estn siempre cerradas, abra la conexin dentro de un bloque usando, como se muestra en el siguiente fragmento de cdigo. Si lo hace, asegura que la conexin se cierra automticamente cuando el cdigo sale del bloque.
Uso de una conexin como New SqlConnection (connectionString) Connection.Open () "Trabaja usted aqu; conexin cerrada en la lnea siguiente. Usando final usando (la conexin SqlConnection = new SqlConnection (connectionString)) { Connection.Open (); / / Trabaja usted aqu; conexin cerrada en la lnea siguiente.

Si una SqlException es generado por el mtodo de la ejecucin de un SqlCommand, el SqlConnection permanece abierta cuando el nivel de gravedad es 19 o menos. Cuando el nivel de gravedad es 20 o ms normalmente, el servidor cierra la conexin SqlConnection. Sin embargo, el usuario puede volver a abrir la conexin y continuar.

Una aplicacin que crea una instancia del objeto SqlConnection puede requerir que todos los llamadores directos e indirectos tengan permisos suficientes en el cdigo mediante el establecimiento de las demandas de seguridad declarativas o imperativas. SqlConnection realiza solicitudes de seguridad utilizando el SqlClientPermission objeto. Los usuarios pueden comprobar que el cdigo tiene los permisos adecuados mediante la SqlClientPermissionAttribute objeto. Los usuarios y administradores tambin pueden utilizar el cdigo de acceso de herramientas de seguridad (Caspol.exe) para modificar la poltica de seguridad en la mquina, el usuario, y de la empresa. Para ms informacin, vea Seguridad en. NET Framework . Para ver un ejemplo que muestra cmo utilizar las demandas de seguridad, vea Seguridad de acceso del cdigo y ADO.NET

SQLDATAADAPTER (CLASE)
Representa un conjunto de comandos de datos y una conexin de base de datos que se utilizan para rellenar un DataSet y actualizar una base de datos de SQL Server. Esta clase no se puede heredar.
'Declaracin Public NotInheritable Class SqlDataAdapter Inherits DbDataAdapter Implements IDbDataAdapter, IDataAdapter, ICloneable 'Uso Dim instance As SqlDataAdapter public final class SqlDataAdapter extends DbDataAdapter implements IDbDataAdapter, IDataAdapter, ICloneable

SqlDataAdapter, se utiliza como un puente entre DataSet y SQL Server para recuperar y guardar datos. SqlDataAdapter proporciona este puente mediante la asignacin de Fill, que cambia los datos en DataSet para que coincidan con los datos del origen de datos; y Update, que cambia los datos en el origen de datos para que coincidan con los datos en DataSet utilizando las instrucciones de Transact-SQL en el origen de datos adecuado. Cuando SqlDataAdapter rellene un objeto DataSet, crear las tablas y columnas necesarias para los datos devueltos si todava no existen. Sin embargo, la informacin de clave principal no se incluir en el esquema creado implcitamente a menos que la propiedad MissingSchemaAction se establezca en AddWithKey. Tambin se puede hacer que SqlDataAdapter cree el esquema de DataSet, incluida la informacin de clave principal, antes de rellenarlo de datos mediante el mtodo FillSchema. Para obtener ms informacin, vea Agregar restricciones existentes a DataSet. SqlDataAdapter se utiliza junto con SqlConnection y SqlCommand para aumentar el rendimiento en la conexin con una base de datos de SQL Server.

SqlDataAdapter contiene tambin las propiedades SelectCommand, InsertCommand, DeleteCommand, UpdateCommand y TableMappings para facilitar la carga y la actualizacin de los datos. Cuando se crea una instancia de SqlDataAdapter, las propiedades de lectura y escritura se establecen en sus valores iniciales. Para obtener una lista de esos valores, vea el constructor SqlDataAdapter. En el ejemplo siguiente se utilizan SqlCommand, SqlDataAdapter y SqlConnection para seleccionar registros de una base de datos, y se rellena DataSet con las filas seleccionadas. A continuacin, se devuelve el DataSet rellenado. Para ello, al mtodo se le pasan un DataSet inicializado, una cadena de conexin y una cadena de consulta que es una instruccin SELECT de Transact-SQL.
Public Function SelectRows( _ ByVal dataSet As DataSet, ByVal connectionString As String, _ ByVal queryString As String) As DataSet Using connection As New SqlConnection(connectionString) Dim adapter As New SqlDataAdapter() adapter.SelectCommand = New SqlCommand( _ queryString, connection) adapter.Fill(dataSet) Return dataSet End Using End Function

DATASET (CLASE)
Representa una cach de memoria interna de datos.
'Declaracin <SerializableAttribute> _ Public Class DataSet Inherits MarshalByValueComponent Implements IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, _ ISerializable 'Uso Dim instance As DataSet /** @attribute SerializableAttribute() */ public class DataSet extends MarshalByValueComponent implements IListSource, IXmlSerializable, ISupportInitializeNotification, ISupportInitialize, ISerializable

DataSet, que es una cach de memoria interna de datos recuperados de un origen de datos, representa un componente fundamental de la arquitectura de ADO.NET. 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. Para obtener informacin ms detallada sobre el trabajo con objetos DataSet, vea Utilizar DataSets en ADO.NET. Los objetos DataTable contienen los datos, mientras que 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", la cadena que se utilice para buscar una de las tablas se considerar que 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 obtener ms informacin sobre el trabajo con los objetos DataTable, vea Crear DataTable. 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. En una implementacin normal de varios niveles, los pasos de creacin y actualizacin de un DataSet y, a su vez, de actualizacin de los datos originales, son los siguientes: 1. Construir y llenar cada DataTable de un DataSet con datos desde un origen de datos mediante DataAdapter. 2. Cambiar los datos de los objetos DataTable individuales mediante la adicin, actualizacin o eliminacin de objetos DataRow. 3. Llamar al mtodo GetChanges para crear un segundo DataSet que slo incorpore los cambios realizados en los datos. 4. Llame al mtodo Update de DataAdapter, pasando el segundo DataSet como argumento. 5. Se invoca el mtodo Merge para combinar los cambios del segundo DataSet con el primero. 6. Invocar al mtodo AcceptChanges de DataSet. O bien, invocar al mtodo RejectChanges para cancelar los cambios. 7. El ejemplo siguiente se compone de varios mtodos que, combinados, crean y rellenan un objeto DataSet a partir de la base de datos Northwind.
8. Option Explicit On 9. Option Strict On 10. 11. Imports System.Data 12. Imports system.Data.SqlClient 13. 14. Public Class NorthwindDataSet 15.

16. Public Shared Sub Main() Dim connectionString As String = _ 17. 18. GetConnectionString() 19. ConnectToData(connectionString) End Sub 20. 21. 22. Private Shared Sub ConnectToData( _ 23. ByVal connectionString As String) 24. ' Create a SqlConnection to the Northwind database. 25. Using connection As SqlConnection = New SqlConnection( _ 26. 27. connectionString) 28. ' Create a SqlDataAdapter for the Suppliers table. 29. 30. Dim suppliersAdapter As SqlDataAdapter = _ New SqlDataAdapter() 31. 32. 33. ' A table mapping names the DataTable. 34. suppliersAdapter.TableMappings.Add("Table", "Suppliers") 35. 36. ' Open the connection. 37. connection.Open() 38. Console.WriteLine("The SqlConnection is open.") 39. ' Create a SqlCommand to retrieve Suppliers data. 40. Dim suppliersCommand As SqlCommand = New SqlCommand( _ 41. 42. "SELECT SupplierID, CompanyName FROM dbo.Suppliers;", _ 43. connection) 44. suppliersCommand.CommandType = CommandType.Text 45. 46. ' Set the SqlDataAdapter's SelectCommand. 47. suppliersAdapter.SelectCommand = suppliersCommand 48. ' Fill the DataSet. 49. Dim dataSet As DataSet = New DataSet("Suppliers") 50. 51. suppliersAdapter.Fill(dataSet) 52. 53. ' Create a second SqlDataAdapter and SqlCommand to get ' the Products table, a child table of Suppliers. 54. Dim productsAdapter As SqlDataAdapter = _ 55. 56. New SqlDataAdapter() 57. productsAdapter.TableMappings.Add("Table", "Products") 58. Dim productsCommand As SqlCommand = New SqlCommand( _ 59. 60. "SELECT ProductID, SupplierID FROM dbo.Products;", _ 61. connection) 62. productsAdapter.SelectCommand = productsCommand 63. ' Fill the DataSet. 64. 65. productsAdapter.Fill(dataSet) 66. ' Close the connection. 67. 68. connection.Close() 69. Console.WriteLine("The SqlConnection is closed.")

70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. End 96.

' Create a DataRelation to link the two tables ' based on the SupplierID. Dim parentColumn As DataColumn = _ dataSet.Tables("Suppliers").Columns("SupplierID") Dim childColumn As DataColumn = _ dataSet.Tables("Products").Columns("SupplierID") Dim relation As DataRelation = New _ System.Data.DataRelation("SuppliersProducts", _ parentColumn, childColumn) dataSet.Relations.Add(relation) Console.WriteLine( _ "The {0} DataRelation has been created.", _ relation.RelationName) End Using End Sub Private Shared Function GetConnectionString() As String ' To avoid storing the connection string in your code, ' you can retrieve it from a configuration file. Return "Data Source=(local);Initial Catalog=Northwind;" _ & "Integrated Security=SSPI;" End Function Class

SQLCONNECTION.CONNECTIONSTRING (PROPIEDAD)
'Declaracin Public Overrides Property ConnectionString As String 'Uso Dim instance As SqlConnection Dim value As String value = instance.ConnectionString instance.ConnectionString = value /** @property */ public String get_ConnectionString () /** @property */ public void set_ConnectionString (String value)

Valor de propiedad Cadena de conexin que incluye el nombre de la base de datos de origen y otros parmetros necesarios para establecer la conexin inicial. El valor predeterminado es una cadena vaca. Excepciones

Tipo de excepcin

Condicin

ArgumentException Se ha suministrado un argumento de cadena de conexin no vlido o no se ha suministrado un argumento de cadena de conexin requerido.
Comentarios

ConnectionString es similar a una cadena de conexin de OLE DB, aunque no idntico. A diferencia de OLE DB y ADO, la cadena de conexin que se devuelve es la misma que la que establece el usuario en ConnectionString menos la informacin de seguridad si el valor de Persist Security Info est establecido en false (valor predeterminado). El proveedor de datos de .NET Framework para SQL Server no se conserva en una cadena de conexin ni devuelve la contrasea, a no ser que el valor de Persist Security Info (Informacin de seguridad persistente) est establecido en true. Se puede utilizar la propiedad ConnectionString para conectarse a una base de datos. En el ejemplo siguiente se muestra una cadena de conexin tpica.
"Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=Northwind;server=(local)"

Utilice el nuevo SqlConnectionStringBuilder para construir cadenas de conexin vlidas en tiempo de ejecucin. Para obtener ms informacin, vea Building Connection Strings. La propiedad ConnectionString slo se puede configurar cuando la conexin est cerrada. Muchos de los valores de cadena de conexin tienen propiedades asociadas de slo lectura. Cuando se establece la cadena de conexin, se actualizan estas propiedades, excepto cuando se detecta un error. En este caso, no se actualiza ninguna de las propiedades. Las propiedades de SqlConnection devuelven nicamente los valores contenidos en la propiedad ConnectionString. Para conectarse a un equipo local, especifique "(local)" para el servidor. (Se debe especificar siempre un servidor). El restablecimiento de ConnectionString de una conexin cerrada, restablece todos los valores de la cadena de conexin (y propiedades relacionadas) incluida la contrasea. Por ejemplo, si se establece una cadena de conexin que incluya "Database= AdventureWorks" y, a continuacin, se restablece la cadena de conexin en "Data Source=myserver;Integrated Security=SSPI", el valor de la propiedad Database deja de ser "AdventureWorks". La cadena de conexin se analiza inmediatamente, una vez establecida. Si durante el anlisis se encuentran errores en la sintaxis, se genera una excepcin en tiempo de ejecucin, como ArgumentException. Se pueden encontrar otros errores slo cuando se realiza un intento para abrir la conexin.

El formato bsico de una cadena de conexin incluye una serie de pares de palabra clave y valor separados por puntos y comas. El signo igual (= ) asocia cada palabra clave a su valor. Para incluir valores que contengan punto y coma, un carcter de comillas simples o un carcter de comillas dobles, el valor debe escribirse entre comillas dobles. Si el valor contiene un punto y coma y un carcter de comillas dobles, se puede escribir entre comillas simples. Las comillas simples se utilizan tambin si el valor comienza por un carcter de comillas dobles. Y a la inversa, si el valor comienza por comillas simples, se pueden utilizar las comillas dobles. Si el valor contiene caracteres de comillas simples y de comillas dobles, el carcter de comillas entre el que se encierra el valor deber duplicarse cada vez que aparezca dentro del valor. Para incluir espacios iniciales o finales en el valor de la cadena, el valor debe escribirse entre comillas simples o comillas dobles. No se tienen en cuenta los espacios iniciales o finales que rodean a los valores enteros, booleanos o enumerados, aunque estn entre comillas. Sin embargo, se conservan los espacios incluidos dentro de una palabra clave o un valor literal de una cadena. Con la versin 1.1 o posterior de .NET Framework, se pueden utilizar comillas simples o dobles dentro de una cadena de conexin sin utilizar delimitadores (por ejemplo, Data Source= my'Server o Data Source= my"Server), a menos que las comillas sean el primer o ltimo carcter del valor. Para incluir un signo igual (=) en una palabra clave o valor, debe ir precedido de otro signo igual. Por ejemplo, en la hipottica cadena de conexin
"key==word=value"

DATATABLE (CLASE)
Representa una tabla de datos en memoria.
'Declaracin <SerializableAttribute> _ Public Class DataTable Inherits MarshalByValueComponent Implements IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, _ IXmlSerializable 'Uso Dim instance As DataTable /** @attribute SerializableAttribute() */ public class DataTable extends MarshalByValueComponent implements IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable

Comentarios

DataTable es un objeto central de la biblioteca ADO.NET. Entre los objetos que utilizan DataTable se incluyen DataSet y DataView. 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", la cadena que se utilice para buscar una de las tablas se considerar que 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. Un objeto DataSet puede contener dos objetos DataTable que tengan el mismo valor para la propiedad TableName y distintos valores para la propiedad Namespace. Para obtener ms informacin sobre el trabajo con los objetos DataTable, vea Crear DataTable. Si se va a crear un DataTable mediante programacin, en primer lugar se debe definir su esquema agregando objetos DataColumn al DataColumnCollection (al que se obtiene acceso mediante la propiedad Columns). Para obtener ms informacin sobre la adicin de objetos DataColumn, vea Agregar columnas a una tabla. Para agregar filas a DataTable, en primer lugar se debe utilizar el mtodo NewRow para devolver un nuevo objeto DataRow. El mtodo NewRow devuelve una fila con el esquema de DataTable, tal como lo define el DataColumnCollection de la tabla. El nmero mximo de filas que puede almacenar un objeto DataTable es 16.777.216. Para obtener ms informacin, vea Agregar datos a una tabla. DataTable tambin contiene una coleccin de objetos Constraint que se pueden utilizar para asegurar la integridad de los datos. Para obtener ms informacin, vea Agregar restricciones a una tabla. Hay muchos eventos DataTable que se pueden utilizar para determinar cuando se realizan cambios en una tabla, algunos de ellos son los siguientes: RowChanged, RowChanging, RowDeleting y RowDeleted. Para obtener ms informacin sobre los eventos que se pueden utilizar con un objeto DataTable, vea Trabajar con eventos DataTable. Cuando se crea una instancia de DataTable, se establecen algunas propiedades de lectura y escritura en valores iniciales. Para obtener una lista de esos valores, vea el tema sobre el constructor System.Data.DataTable.

DATABINDING
Los controles que con regularidad se utilizan en aplicaciones Windows as como en aplicaciones Web tienen la propiedad DataBinding, es necesario configurar la propiedad de cada control que contendr en enlace a los datos, luego para administrar esta se debe utilizar la propiedad BindingContext de la clase contenedora. Al usar el BindingContext obtiene el BindingManagerBase que mantiene sincronizados todos los controles enlazados al mismo origen de datos, se puede utilizar la propiedad Position del BindingManagerBase para especificar el elemento actualmente seleccionado de una lista. Por ejemplo, para enlazar una caja de texto con el campo FirsName de la Tabla Empleados (dtEmpleados) contenida en una DataSet previamente definido utilizo la siguiente instruccin: txtNombre.DataBindings.Add("Text", dtEmpleados, "FirstName") Luego para administrar por ejemplo la posicin actual o lo que es lo mismo el registro activo se utiliza la siguiente instruccin: Me.BindingContext(dtEmpleados).Position = 0 Note en la instruccin anterior que se utiliza a propiedad BindingContext del formulario, como lo dicho en lneas arriba, la propiedad Position va a mantener sincronizados todos los controles enlazados al DataTable dtEmpleados. NUESTRO EJEMPLO El ejemplo muestra un formulario donde aparecen los Empleados (Tabla Employees), el Total de sus ventas, las rdenes Registradas (Tabla Oders) por el Empleado y el Detalle de las mismas (Tabla Order Details). La Base de datos es Northwind. Se ha utilizado un SQLDataAdapter, definido mediante cdigo, para generar los comandos SQL se ha utilizado un SQLCommandBuilder, luego al SQLDataAdapter cambiamos el SQLCommand Select para poder llenar los DataTables. Las rdenes Select para nuestro ejemplo son las siguientes: 1. Para poder llenar el DataTable de rdenes:
/*ID de la Compaa*/ Orden, Total, Id Empleado, la Fecha y el Nombre de la

SELECT od.OrderID, SUM(CONVERT(money, (od.UnitPrice * od.Quantity) * (1 od.Discount) / 100) * 100) AS Total, o.EmployeeID, o.OrderDate, c.CompanyName FROM [Order Details] od INNER JOIN Orders o ON od.OrderID = o.OrderID

INNER JOIN Customers c ON o.CustomerID = c.CustomerID GROUP BY od.OrderID, o.EmployeeID, o.OrderDate, c.CompanyName 2. Para llenar Total de las ventas creamos un DataTable con el Id del Empleado y el valor total de las rdenes. /*ID del SELECT As FROM INNER Empleado e.employeeid, y el Total sum(UnitPrice de * sus ventas*/ Quantity) SalesToDate od o od.orderid e o.employeeid

[order JOIN ON o.orderid INNER JOIN ON e.employeeid GROUP BY e.employeeid

details] orders = employees =

3. Para llenar el DataTable de Detalle de las rdenes:


/*Orden select para el Detalle de las rdenes Extrae: ID de la Orden, Precio, Cantidad, Descuento, Nombre Producto nombre de Categoa y Subtotal*/ SELECT od.OrderID, od.UnitPrice, od.Quantity, od.Discount, p.ProductName, c.CategoryName, (od.UnitPrice * od.Quantity) As SubTotal FROM [order details] od INNER JOIN Products p ON od.ProductID = p.ProductID INNER JOIN Categories c ON c.CategoryID = p.CategoryID ORDER BY od.OrderID

Las instrucciones Select anteriores puedes copiarlas al Query Analyzer de SQL Server usando la base de datos Northwind para ver los resultados, es obvio que todos los lectores conocen de la sintaxis y del uso de Transac SQL. En el ejemplo se han includo cuatro DataTable y tres Vistas, con las siguientes rdenes asigno los DataTables creados a variables y especifico el origen de las Vistas creadas.
'Asignar los DataTables a las Variables definidas dtEmpleados = dsDatos.Tables("Empleados") dtOrdenes = dsDatos.Tables("Ordenes") dtVentas = dsDatos.Tables("Ventas") dtDetalle = dsDatos.Tables("Detalle") 'Especificar las Vistas dtOrdenes.DefaultView dtDetalle.DefaultView

dvOrdenes = dvVentas = dvDetalle = dtDetalle.DefaultView

Luego se agregan los DataBindings para los controles y conseguimos mantener enlazados y sincronizados los controles.