sábado, 17 de junio de 2017



ESPACIO DE NOMBRES SYSTEM.DATA. SQLCLIENT

1.CONTENIDO
·       Definición
Los espacios de nombres (namespaces) son uno de los pilares que conforman los cimientos de XML. En general, en informática, un namespace o espacio de nombres es un medio para organizar clases dentro de un entorno, agrupándolas de un modo más lógico y jerárquico.
El espacio de nombres System.Data proporciona acceso a las clases que representan la arquitectura de ADO.NET. ADO.NET permite crear componentes que administran datos de varios orígenes de datos con eficacia.
Es un proveedor de datos de .NET Framework para SQL Server describe una colección de clases utilizada para tener acceso a una base de datos de SQL Server en el espacio administrado. Al utilizar SqlDataAdapter, se puede rellenar un DataSet residente en memoria, que sirve para consultar y actualizar la base de datos.

·       Clases
v SqlClientPermission Habilita el proveedor de datos de .NET Framework para SQL Server para garantizar que un usuario tiene el nivel de seguridad adecuado para obtener acceso a un origen de datos.
v SqlClientPermissionAttribute Asocia una acción de seguridad a un atributo de seguridad personalizado.
v SqlCommand Representa un procedimiento almacenado o una instrucción de Transact-SQL que se ejecuta en una base de datos de SQL Server. Esta clase no se puede heredar.
v SqlCommandBuilder Genera automáticamente, en una sola tabla, los comandos que se utilizan para reconciliar los cambios realizados en un DataSet con la base de datos de SQL Server asociada. Esta clase no se puede heredar.
v SqlConnection Representa una conexión abierta con una base de datos de SQL Server. Esta clase no se puede heredar.
v SqlDataAdapter Representa un conjunto de comandos de datos y una conexión 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.
v SqlDataReader Proporciona una forma de leer una secuencia de filas sólo hacia delante en una base de datos de SQL Server. Esta clase no se puede heredar.
v SqlError Recopila información relevante para una advertencia o un error devuelto por SQL Server. Esta clase no se puede heredar.
v SqlErrorCollection Recopila todos los errores generados por el proveedor de datos de .NET Framework para SQL Server. Esta clase no se puede heredar.
v SqlException La excepción que se inicia cuando SQL Server devuelve una advertencia o un error. Esta clase no se puede heredar.
v SqlInfoMessageEventArgs Proporciona datos para el evento InfoMessage. Esta clase no se puede heredar.
v SqlParameter Representa un parámetro de un SqlCommand y, de manera opcional, su asignación a columnas de DataSet. Esta clase no se puede heredar.
v SqlParameterCollection Representa una colección de parámetros relevantes para SqlCommand, así como las asignaciones correspondientes a las columnas de DataSet. Esta clase no se puede heredar.
v SqlRowUpdatedEventArgs Proporciona datos para el evento RowUpdated. Esta clase no se puede heredar.
v SqlRowUpdatingEventArgs Proporciona datos del evento RowUpdating. Esta clase no se puede heredar.
v SqlTransaction Representa una transacción de Transact-SQL que se realiza en una base de datos de SQL Server. Esta clase no se puede heredar.
·       Delegados

*      OnChangeEventHandler:Controla el OnChange evento que se desencadena cuando se recibe una notificación para cualquiera de los comandos asociados a un SqlDependency objeto.

*      SqlInfoMessageEventHandler:Representa el método que controlará el evento InfoMessage de SqlConnection.

*      SqlRowsCopiedEventHandler:Representa el método que controla el evento SqlRowsCopied de SqlBulkCopy.

*      SqlRowUpdatedEventHandler:Representa el método que controlará el evento RowUpdated de SqlDataAdapter.

*      SqlRowUpdatingEventHandler:Representa el método que controlará el evento RowUpdating de SqlDataAdapter.



·         Enumeraciones

ü  ApplicationIntent:Especifica un valor para ApplicationIntent. Los valores posibles son ReadWrite y ReadOnly.
ü  PoolBlockingPeriod:Especifica un valor para PoolBlockingPeriod Propiedad.
ü  SortOrder:Especifica cómo se ordenan las filas de datos.
ü  SqlAuthenticationMethod:Describe los diferentes métodos de autenticación de SQL que puede usar un cliente que se conecta a la base de datos SQL de Azure. Para obtener más información, consulte Connecting to SQL Database By Using Azure Active Directory Authentication.
ü  SqlBulkCopyOptions :Marca bit a bit que especifica una o varias opciones que se van a usar con una instancia de SqlBulkCopy.
ü  SqlCommandColumnEncryptionSetting:Especifica cómo se enviarán y recibirán los datos al leer y editar columnas cifradas. Según su consulta específica, el impacto en el rendimiento puede reducirse omitiendo el procesamiento del controlador Siempre cifrado cuando no se usan columnas sin cifrar. Tenga en cuenta que no se puede usar esta configuración para omitir el cifrado y obtener acceso a datos de texto no cifrado. Para obtener más información, vea Always Encrypted (Database Engine)
ü  SqlConnectionColumnEncryptionSetting:Especifica que la funcionalidad de siempre cifrado está habilitada en una conexión. Tenga en cuenta que no se puede usar esta configuración para omitir el cifrado y obtener acceso a datos de texto no cifrado. Para obtener más información, consulte Always Encrypted (Database Engine).
ü  SqlNotificationInfo:Esta enumeración proporciona información adicional sobre las diferentes notificaciones que puede ser recibido por el controlador de eventos de dependencia.
ü  SqlNotificationSource:Indica el origen de la notificación recibida por el controlador de eventos de dependencia.
ü  SqlNotificationType:Describe los diferentes tipos de notificación que pueden recibir un OnChangeEventHandler el controlador de eventos a través de la SqlNotificationEventArgs parámetro.

·       Ejemplos
a.      Siga estos pasos para crear una nueva aplicación de consola de Visual J#. NET:
Inicie Visual Studio. NET.
b.      En el menú archivo, elija nuevo y, a continuación, haga clic en proyecto.
c.       En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual J# en Tipos de proyectoy, a continuación, haga clic en Aplicación de consola en plantillas.
2.      Asegúrese de que el proyecto contiene una referencia al espacio de nombres System.Data y agregue una referencia si no es así.
3.      Para que no tenga que suministrar declaraciones de dichos espacios de nombres más adelante en el código, utilice la instrucción import en el System.Data.SqlClient y los espacios de nombres System.Data.OleDb .
import System.Data.SqlClient.*;import System.Data.OleDb.*;
import System.Data.*;

4.      Antes de poder crear una conexión a una base de datos, debe tener una cadena de conexión. Cadenas de conexión contienen toda la información que necesita para establecer una conexión de base de datos, incluyendo el nombre del servidor, el nombre de la base de datos, el identificador de usuario y la contraseña. Evite utilizar la cuenta SA. Por ejemplo, la cadena de conexión siguiente señala a un equipo local que ejecuta SQL Server con una cuenta de < username > y una fuerte contraseña < strong >:

Para las conexiones OleDb:
Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)
Para las conexiones de SqlClient:
User ID=<username>;Initial Catalog=pubs;Data Source=(local)
Nota: si necesita más ayuda para determinar la cadena de conexión para la base de datos, busque "ConnectionString" en Microsoft Developer Network (MSDN) Library en el sitio Web de Microsoft siguiente:
5.      Visual Studio crea una clase estática y un procedimiento Main() vacío. Declare una variable de cadena y almacene la cadena de conexión apropiada para la base de datos en este procedimiento:
public static void main(String[] args){
//
// TODO: Add code to start application here
//
String sConnectionString = "User ID=<username>;Initial Catalog=pubs;Data Source=mysource1;Password=<strong password>";

}

6.      Con esta cadena de conexión, cree un nuevo objeto OleDbConnection o SqlConnection y llamar a su método Open para establecer una conexión con la base de datos:
SqlConnection objConn = new SqlConnection(sConnectionString);objConn.Open();

7.      Crear objeto OleDbCommand o SqlCommand y pase el comando que desea ejecutar y el objeto de conexión que creó en el paso anterior. El código de ejemplo siguiente pasa la instrucción INSERT:
String sSQL = "INSERT INTO Employee " + "(emp_id, fname, minit, lname, job_id, job_lvl,pub_id, hire_date) " + "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie',10,82,'0877','2001-01-01')";SqlCommand objCmd = new SqlCommand(sSQL,objConn);

8.      Después de crear el objeto OleDbCommand o SqlCommand , puede llamar al método ExecuteNonQuery para ejecutar el comando que representa. ExecuteNonQuery está diseñado para comandos que no devuelven ningún resultado (como DELETE, la actualización y las instrucciones INSERT). Si la instrucción Execute se ejecuta sin desencadenar una excepción (vea el código siguiente), el comando se ha ejecutado correctamente en la base de datos.
objCmd.ExecuteNonQuery();
9.      Modifique la cadena de conexión según corresponda para su entorno y, a continuación, guarde el proyecto. En el menú Depurar , haga clic en Iniciar para ejecutar el comando contra la base de datos.
Cómo utilizar parámetros
Cuando ejecuta los comandos contra una base de datos (tales como la UPDATE, INSERT y DELETE instrucciones o llamadas a procedimientos almacenan), estos comandos suelen tener parámetros. Esto permite que el comando se crea una vez y ejecutarse varias veces con diferentes valores que se insertan en lugar de parámetros. Considere la instrucción DELETE correspondiente a la instrucción INSERT que se utiliza en la sección anterior:
String sSQL  = "DELETE FROM Employee WHERE emp_id = @emp_id";
El nombre de parámetro ("@emp_id") de esta instrucción DELETE representa un parámetro que puede reemplazar con valores diferentes cada vez que ejecute el comando.

Para utilizar parámetros con el comando, siga estos pasos:

1.      Cree un objeto OleDbConnection o SqlConnection , como hizo en la sección "cómo ejecutar un comando".
2.      Reemplace los valores por marcadores de posición (por ejemplo, "@emp_id" o "@fname") para que el texto del comando utilice parámetros. Vea la instrucción DELETE antes de estos pasos para obtener un ejemplo.
3.      Cree un objeto OleDbCommand o SqlCommand y pase el objeto de conexión que creó en el primer paso y el texto del comando que contiene los marcadores de posición de parámetro.
4.      Obtiene la colección de parámetros del objeto command:
SqlParameterCollection ParamColl = objCmd.get_Parameters();
5.      Para cada parámetro, agregue un objeto de parámetro a la colección de parámetros del objeto command. Para cada parámetro, debe especificar un nombre y tipo de datos.
ParamColl.Add("@emp_id",SqlDbType.Char,9);
6.      Los procedimientos almacenados pueden tener parámetros que devuelvan valores y parámetros de salida. También debe establecer un valor para cada parámetro de entrada para poder ejecutar la consulta:
ParamColl.get_Item("@emp_id").set_Value((System.String)"MSD12923F");
7.      Ejecute la consulta como sigue:
try {
objCmd.ExecuteNonQuery();
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("Record Deleted");
2.RESUMEN

Entre los espacios de nombres de .NET Framework relativos a datos y XML se incluyen:
System.Data: consiste en clases que constituyen la arquitectura ADO.NET, que es el método principal para tener acceso a los datos de las aplicaciones administradas. La arquitectura ADO.NET permite crear componentes que administran eficazmente los datos procedentes de múltiples orígenes. ADO.NET también proporciona las herramientas necesarias para solicitar, actualizar y reconciliar datos en aplicaciones distribuidas.
System.Data.Common: contiene clases que comparten los proveedores de datos .NET Framework. Dichos proveedores describen una colección de clases que se utiliza para obtener acceso a un origen de datos, como una base de datos, en el espacio administrado.
System.Xml: contiene clases que proporcionan funcionalidad basada en estándares para procesar código XML.
System.Data.OleDb: clases que constituyen el proveedor de datos de .NET Framework para orígenes de datos compatibles con OLE DB. Estas clases permiten conectarse a un origen de datos OLE DB, ejecutar comandos en el origen y leer los resultados.
System.Data.SqlClient: clases que constituyen el proveedor de datos de .NET Framework para SQL Server, que permite conectarse a un origen de datos SQL Server 7.0, ejecutar comandos y leer los resultados. El espacio de nombres System.Data.SqlClient es similar al espacio de nombres System.Data.OleDb, pero se optimiza para el acceso a SQL Server 7.0 y posterior.
System.Data.Sql: clases que admiten funcionalidad específica de SQL Server.
System.Data.SqlTypes: proporciona clases para los tipos de datos nativos de SQL Server. Estas clases proporcionan una alternativa más rápida y segura a otros tipos de datos.
Microsoft.SqlServer.Server: clases, interfaces y enumeraciones específicas en la integración de Common Language Runtime (CLR) de Microsoft .NET Framework en Microsoft SQL Server, y el entorno de ejecución de procesos del motor de base de datos de SQL Server.
System.Data.Odbc: clases que constituyen el proveedor de datos de .NET Framework para ODBC. Estas clases permiten el acceso a orígenes de datos ODBC en el espacio administrado.
System.Data.OracleClient: clases que constituyen el proveedor de datos de .NET Framework para Oracle. Estas clases permiten el acceso a orígenes de datos Oracle en el espacio administrado.
System.Transactions: clases que permiten escribir su propia aplicación transaccional y administrador de recursos. Específicamente, puede crear y participar en una transacción (local o distribuida) con uno o varios participantes.

3.SUMMARY

The .NET Framework namespaces for data and XML include:
System.Data: consists of classes that make up the ADO.NET architecture, which is the main method for accessing the data of managed applications. The ADO.NET architecture allows you to create components that efficiently manage data from multiple sources. ADO.NET also provides the tools you need to request, update, and reconcile data in distributed applications.
System.Data.Common: Contains classes that are shared by .NET Framework data providers. These providers describe a class collection that is used to access a data source, such as a database, in the managed space.
System.Xml contains classes that provide standards-based functionality for processing XML code.
System.Data.OleDb: Classes that constitute the .NET Framework data provider for OLE DB-compliant data sources. These classes connect to an OLE DB data source, execute commands on the source, and read the results.
System.Data.SqlClient: Classes that constitute the .NET Framework data provider for SQL Server, which allow you to connect to a SQL Server 7.0 data source, execute commands, and read the results. The System.Data.SqlClient namespace is similar to the System.Data.OleDb namespace, but is optimized for access to SQL Server 7.0 and later.
System.Data.Sql: Classes that support SQL Server-specific functionality.
System.Data.SqlTypes: Provides classes for native SQL Server data types. These classes offer a faster and more secure alternative to other types of data.
Microsoft.SqlServer.Server: Specific classes, interfaces, and enumerations in Microsoft .NET Framework Common Language Runtime (CLR) integration in Microsoft SQL Server, and the SQL Server database engine process execution environment.
System.Data.Odbc: classes that constitute the .NET Framework data provider for ODBC. These classes allow access to ODBC data sources in the managed space.
System.Data.OracleClient: classes that make up the .NET Framework data provider for Oracle. These classes allow access to Oracle data sources in the managed space.
System.Transactions: classes that allow you to write your own transactional application and resource manager. Specifically, you can create and participate in a transaction with one or more participants.
4.RECOMENDACIONES
Precaución ADO.NET 2.0 no admite los comandos asincrónicos en la memoria compartida de SQL Server 2000 o inferior. Sin embargo, puede forzar TCP en lugar de la memoria compartida. Para ello, ponga el prefijo tcp: delante del nombre del servidor en la cadena de conexión o puede utilizar el host local.
5.CONCLUSIONES
SqlConnection objeto representa una sesión única a un SQL Server origen de datos. Con un sistema de base de datos cliente/servidor, es equivalente a una conexión de red al servidor. SqlConnectionse utiliza junto con SqlDataAdapter y SqlCommand para aumentar el rendimiento cuando se conecta a Microsoft SQL Server base de datos. Para todas las aplicaciones de terceros SQL Server productos y otros orígenes de datos compatibles con OLE DB, utilizan OleDbConnection.
Cuando se crea una instancia de SqlConnection, todas las propiedades se establecen en sus valores iniciales. Para obtener una lista de estos valores, consulte el SqlConnection constructor.
Consulte ConnectionString para obtener una lista de las palabras clave en una cadena de conexión.
Si la SqlConnection queda fuera del ámbito, no se cerrará. Por lo tanto, debe cerrar la conexión explícitamente mediante una llamada a Close o Dispose. Closey Dispose son funcionalmente equivalentes. Si la agrupación de conexiones de los valores Pooling está establecido en true o yes, la conexión subyacente se devuelve a la agrupación de conexiones. Por otro lado, si Pooling está establecido en false o no, la conexión al servidor subyacente está cerrada realmente.

6.APRECIACIÓN
Los eventos de inicio y cierre de sesión no se provocarán en el servidor cuando se busque una conexión desde el grupo de conexiones o se devuelva a éste, puesto que la conexión no está cerrada realmente cuando se devuelve al grupo de conexiones. Para obtener más información, consulta Agrupación de conexiones en SQL Server (ADO.NET).
7.LINKOGRAFIA