Tutorial: Usar solo procedimientos almacenados (Visual Basic)
Este tutorial proporciona un escenario completo básico de LINQ to SQL para tener acceso a los datos utilizando procedimientos almacenados solamente. Este enfoque suelen utilizarlo los administradores de bases de datos para limitar el acceso al almacén de datos.
Nota
También puede utilizar procedimientos almacenados en aplicaciones de LINQ to SQL para invalidar el comportamiento predeterminado, especialmente para los procesos Create
, Update
y Delete
. Para más información, consulte Personalizar operaciones de actualización, inserción y eliminación (LINQ to SQL).
En este tutorial, utilizará dos métodos asignados a procedimientos almacenados en la base de datos de ejemplo Northwind: CustOrdersDetail y CustOrderHist. La asignación se produce al ejecutar la herramienta de línea de comandos SqlMetal para crear un archivo de Visual Basic. Para obtener más información, vea la sección Requisitos previos que se incluye posteriormente en este tutorial.
Este tutorial no se basa en Object Relational Designer. Los desarrolladores que usen Visual Studio también pueden utilizar Object Relational Designer para implementar funcionalidad de procedimiento almacenado. Consulte Herramientas de LINQ to SQL en Visual Studio.
Nota:
Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.
Este tutorial se escribió con la configuración de desarrollo de Visual Basic.
Requisitos previos
En este tutorial se requiere lo siguiente:
Este tutorial utiliza una carpeta dedicada ("c:\linqtest3") que contiene los archivos. Cree esta carpeta antes de empezar el tutorial.
Base de datos de ejemplo Northwind.
Si no dispone de esta base de datos en el equipo de desarrollo, puede descargarla del sitio web de descargas de Microsoft. Para obtener más información, consulte Descargar bases de datos de ejemplo (LINQ to SQL). Después de haber descargado la base de datos, copie el archivo northwnd.mdf en la carpeta c:\linqtest3.
Archivo de código de Visual Basic generado a partir de la base de datos Northwind.
Este tutorial se escribió utilizando la herramienta SqlMetal con la línea de comandos siguiente:
sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize
Para obtener más información, vea SqlMetal.exe (Herramienta de generación de código).
Información general
Este tutorial se compone de seis tareas principales:
Configurar la solución LINQ to SQL en Visual Studio.
Agregar el ensamblado System.Data.Linq al proyecto.
Agregar el archivo de código de la base de datos al proyecto.
Crear una conexión con la base de datos.
Configurar la interfaz de usuario.
Ejecutar y probar la aplicación.
Crear una solución LINQ to SQL
En esta primera tarea, va a crear una solución de Visual Studio que contiene las referencias necesarias para compilar y ejecutar un proyecto de LINQ to SQL.
Para crear una solución LINQ to SQL
En el menú Archivo de Visual Studio, haga clic en Nuevo proyecto.
En el panel Tipos de proyecto del cuadro de diálogo Nuevo proyecto , expanda Visual Basicy, a continuación, haga clic en Windows.
En el panel Plantillas , haga clic en Aplicación de Windows Forms.
En el cuadro Nombre, escriba SprocOnlyApp.
Haga clic en OK.
Se abre el Diseñador de Windows Forms.
Agregar la referencia al ensamblado de LINQ to SQL
El ensamblado de LINQ to SQL no está incluido en la plantilla Aplicación de Windows Forms estándar. Tendrá que agregar el ensamblado como se explica en los pasos siguientes:
Para agregar System.Data.Linq.dll
En el Explorador de soluciones, haga clic en Mostrar todos los archivos.
En el Explorador de soluciones, haga clic con el botón secundario del mouse en Referencias y, a continuación, haga clic en Agregar referencia.
En el cuadro de diálogo Agregar referencia, haga clic en .NET, en el ensamblado System.Data.Linq y, a continuación, en Aceptar.
El ensamblado se agrega al proyecto.
Agregar el archivo de código de Northwind al proyecto
En este paso se asume que ha utilizado la herramienta SqlMetal para generar un archivo de código a partir de la base de datos de ejemplo Northwind. Para obtener más información, vea la sección Requisitos previos, anteriormente en este tutorial.
Para agregar el archivo de código de Northwind al proyecto
En el menú Proyecto , haga clic en Agregar elemento existente.
En el cuadro de diálogo Agregar elemento existente, vaya a c:\linqtest3\northwind.vb y, a continuación, haga clic en Agregar.
El archivo northwind.vb se agrega al proyecto.
Crear una conexión de base de datos
En este paso, definirá la conexión con la base de datos de ejemplo Northwind. En este tutorial se utiliza "c:\linqtest3\northwnd.mdf" como ruta de acceso.
Para crear la conexión a la base de datos
En el Explorador de soluciones, haga clic con el botón secundario del mouse en Form1.vb y, a continuación, haga clic en Ver código.
Class Form1
aparece en el editor de código.Escriba el código siguiente en el bloque de código
Form1
:Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
Configurar la interfaz de usuario
En esta tarea creará una interfaz para que los usuarios puedan ejecutar procedimientos almacenados para tener acceso a los datos de la base de datos. En la aplicación que desarrolla con este tutorial, los usuarios pueden tener acceso a los datos de la base de datos únicamente mediante los procedimientos almacenados que están incrustados en la aplicación.
Para configurar la interfaz de usuario
Regrese al Diseñador de Windows Forms (Form1.vb[Design]).
En el menú Ver , haga clic en Cuadro de herramientas.
Se abrirá el cuadro de herramientas.
Nota
Haga clic en el icono para ocultar automáticamente de forma que el cuadro de herramientas se mantenga abierto mientras realiza los demás pasos de esta sección.
Arrastre dos botones, dos cuadros de texto y dos etiquetas desde el cuadro de herramientas hasta Form1.
Organice los controles como en la ilustración anexa. Expanda Form1 para que los controles tengan el espacio necesario.
Haga clic con el botón secundario del mouse en Label1 y, a continuación, haga clic en Propiedades.
Cambie la propiedad de texto de Label1 a Enter OrderID:.
De la misma manera, para Label2, cambie la propiedad de texto de Label2 a Enter CustomerID:.
De la misma manera, cambie la propiedad de texto de Button1 a Order Details.
Cambie la propiedad de texto para Button2 a Order History.
Amplíe los controles de botón para que todo el texto esté visible.
Para administrar los clics de botón
Haga doble clic en Detalles de pedido en Form1 crear el controlador de eventos
Button1
y abrir el editor de código.Escriba el código siguiente en el controlador
Button1
:' Declare a variable to hold the contents of ' TextBox1 as an argument for the stored ' procedure. Dim parm As String = TextBox1.Text ' Declare a variable to hold the results returned ' by the stored procedure. Dim custQuery = db.CustOrdersDetail(parm) ' Clear the message box of previous results. Dim msg As String = "" Dim response As MsgBoxResult ' Execute the stored procedure and store the results. For Each custOrdersDetail As CustOrdersDetailResult In custQuery msg &= custOrdersDetail.ProductName & vbCrLf Next ' Display the results. If msg = "" Then msg = "No results." End If response = MsgBox(msg) ' Clear the variables before continuing. parm = "" TextBox1.Text = ""
Ahora haga doble clic en Button2 en Form1 para crear el controlador de eventos
Button2
y abrir el editor de código.Escriba el código siguiente en el controlador
Button2
:' Comments in the code for Button2 are the same ' as for Button1. Dim parm As String = TextBox2.Text Dim custQuery2 = db.CustOrderHist(parm) Dim msg As String = "" Dim response As MsgBoxResult For Each custOrdHist As CustOrderHistResult In custQuery2 msg &= custOrdHist.ProductName & vbCrLf Next If msg = "" Then msg = "No results." End If response = MsgBox(msg) parm = "" TextBox2.Text = ""
Probar la aplicación
Ha llegado el momento de probar la aplicación. Observe que su contacto con el almacén de datos se limita a las acciones que puedan realizar los dos procedimientos almacenados. Esas acciones son: devolver los productos incluidos para cualquier orderID que escriba o devolver un historial de los productos solicitados para cualquier CustomerID que escriba.
Para probar la aplicación
Presiona F5 para iniciar la depuración.
Aparece Form1.
En el cuadro Enter OrderID, escriba 10249 y, a continuación, haga clic en Order Details.
Un cuadro de mensaje muestra los productos incluidos en el pedido 10249.
Haga clic en Aceptar para cerrar el cuadro de mensaje.
En el cuadro Enter CustomerID, escriba
ALFKI
y, a continuación, haga clic en Order History.Aparece un cuadro de mensaje con el historial de pedidos del cliente ALFKI.
Haga clic en Aceptar para cerrar el cuadro de mensaje.
En el cuadro Enter OrderID, escriba
123
y, a continuación, haga clic en Order Details.Aparece un cuadro de mensaje con el texto "No results".
Haga clic en Aceptar para cerrar el cuadro de mensaje.
En el menú Depurar, haga clic en Detener depuración.
La sesión de depuración se cierra.
Cuando termine de experimentar, haga clic en Cerrar proyecto en el menú Archivo y guarde su proyecto cuando se le solicite.
Pasos siguientes
Puede mejorar este proyecto realizando algunos cambios. Por ejemplo, podría enumerar los procedimientos almacenados disponibles en un cuadro de lista y permitir que el usuario seleccione qué procedimientos debe ejecutar. También podría transmitir el resultado de los informes a un archivo de texto.