Поделиться через


Пошаговое руководство. Использование только хранимых процедур (Visual Basic)

В этом пошаговом руководстве представлен базовый комплексный сценарий LINQ to SQL для доступа к данным только с помощью хранимых процедур. Этот метод часто используется администраторами баз данных для ограничения способов получения доступа к хранилищам данных.

Примечание.

Вы также можете использовать хранимые процедуры в приложениях LINQ to SQL для переопределения поведения по умолчанию, особенно для Createпроцессов Updateи Delete процессов. Дополнительные сведения см. в разделе "Настройка операций вставки, обновления и удаления".

Для целей данного пошагового руководства будут использованы два метода, которые были сопоставлены с хранимыми процедурами в образце базы данных Northwind: CustOrdersDetail и CustOrderHist. Сопоставление возникает при запуске программы командной строки SqlMetal для создания файла Visual Basic. Дополнительные сведения см. в разделе "Предварительные требования" далее в этом руководстве.

Это пошаговое руководство не зависит от реляционный конструктор объектов. Разработчики, использующие Visual Studio, также могут использовать конструктор O/R для реализации функций хранимой процедуры. См . статью "Инструменты LINQ to SQL" в Visual Studio.

Примечание.

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.

Это пошаговое руководство было написано с помощью параметров разработки Visual Basic.

Необходимые компоненты

Необходимо выполнить следующие требования.

  • Для хранения файлов используется выделенная папка ("c:\linqtest3"). Прежде чем приступить к выполнению задач, создайте такую папку.

  • Наличие учебной базы данных Northwind.

    Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных". После загрузки базы данных скопируйте файл northwnd.mdf в папку c:\linqtest3.

  • Наличие файла кода Visual Basic, созданного из базы данных "Борей".

    Данное пошаговое руководство было написано с использованием средства SqlMetal со следующей командной строкой:

    sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize

    Дополнительные сведения см. в разделе SQLMetal.exe (средство создания кода).

Обзор

Данное пошаговое руководство состоит из шести основных задач.

  • Настройка решения LINQ to SQL в Visual Studio.

  • Добавление сборки System.Data.Linq в проект.

  • Добавление файла кода базы данных в проект.

  • Создание подключения к базе данных.

  • Настройка пользовательского интерфейса.

  • Запуск и тестирование приложения.

Создание решения LINQ to SQL

В этой первой задаче создается решение Visual Studio, содержащее необходимые ссылки на сборку и запуск проекта LINQ to SQL.

Создание решения LINQ to SQL

  1. В меню Файл Visual Studio выберите команду Создать проект.

  2. В области Типы проектов диалогового окна Создать проект разверните узел Visual Basic, а затем щелкните Windows.

  3. Выберите Приложение Windows Forms в области Шаблоны.

  4. В поле "Имя" введите SprocOnlyApp.

  5. Щелкните OK.

    Откроется конструктор Windows Forms.

Добавление ссылки на сборку LINQ to SQL

Сборка LINQ to SQL не включена в стандартный шаблон приложения Windows Forms. Сборку необходимо добавить самостоятельно, выполнив приведенные ниже действия.

Добавление сборки System.Data.Linq.dll

  1. В Обозреватель решений нажмите кнопку "Показать все файлы".

  2. В Обозреватель решений щелкните правой кнопкой мыши ссылки и нажмите кнопку "Добавить ссылку".

  3. В диалоговом окне "Добавить ссылку" нажмите кнопку .NET, щелкните сборку System.Data.Linq и нажмите кнопку "ОК".

    Сборка будет добавлена в проект.

Добавление файла кода Northwind в проект

При выполнении действий этого шага предполагается, что для создания файла кода из учебной базы данных Northwind использовалась программа SQLMetal. Дополнительные сведения см. в разделе "Предварительные требования" ранее в этом руководстве.

Добавление файла кода northwind в проект

  1. В меню Проект выберите пункт Добавить существующий элемент.

  2. В диалоговом окне "Добавление существующего элемента" перейдите к c:\linqtest3\northwind.vb и нажмите кнопку "Добавить".

    Файл northwind.vb будет добавлен в проект.

Создание подключения к базе данных

На этом этапе определяется подключение к учебной базе данных Northwind. В качестве пути используется "c:\linqtest3\northwnd.mdf".

Создание подключения к базе данных

  1. В Обозреватель решений щелкните правой кнопкой мыши Form1.vb и выберите команду "Просмотреть код".

    В редакторе кода откроется Class Form1.

  2. В блок кода Form1 введите следующий код.

    Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
    

Настройка пользовательского интерфейса

В этой задаче создается интерфейс, с помощью которого пользователи могут выполнять хранимые процедуры для получения доступа к данным в базе данных. В приложении, разрабатываемом с помощью настоящего пошагового руководства, пользователи могут получать доступ к данным в базе данных только с помощью хранимых процедур, внедренных в приложение.

Настройка пользовательского интерфейса

  1. Вернитесь в конструктор Windows Forms (Form1.vb[конструктор]).

  2. В меню Вид выберите пункт Область элементов.

    Откроется панель элементов.

    Примечание.

    Нажмите кнопку "АвтоХидент ", чтобы сохранить панель элементов открытой во время выполнения оставшихся действий в этом разделе.

  3. Перетащите две кнопки, два текстовых поля и две метки из панели элементов в Form1.

    Расположите элементы управления в соответствии с показанным здесь рисунком. Разверните форму 1 , чтобы элементы управления легко соответствовали.

  4. Щелкните правой кнопкой мыши Label1 и выберите пункт "Свойства".

  5. Измените свойство Text с Label1 на ВВОД OrderID:.

  6. Таким же образом для Label2 измените свойство Text с Label2 на Ввод CustomerID:.

  7. Таким же образом измените свойство Text для Button1 на Order Details.

  8. Измените свойство Text для Button2 на Order History.

    Расширьте элементы управления "Кнопка", чтобы отображался весь текст.

Обработка нажатий кнопки

  1. Дважды щелкните "Сведения о заказеButton1" в Form1, чтобы создать обработчик событий и открыть редактор кода.

  2. Введите в обработчик кнопки 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 = ""
    
  3. Теперь дважды щелкните Button2 в Form1, чтобы создать Button2 обработчик событий и открыть редактор кода.

  4. Введите в обработчик кнопки 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 = ""
    

Тестирование приложения

Теперь необходимо протестировать приложение. Обратите внимание, что все обращения к хранилищу данных ограничены теми действиями, которые могут выполняться двумя хранимыми процедурами. Эти действия заключаются в возвращении продуктов, включенных в заказ с введенным кодом, или истории продуктов, заказанных клиентом с введенным кодом.

Тестирование приложения

  1. Нажмите клавишу F5, чтобы начать отладку.

    Откроется форма "Form1".

  2. В поле ВВОД OrderID введите 10249 и нажмите кнопку "Сведения о заказе".

    В окне сообщения будет отображен список продуктов, включенных в заказ 10249.

    Нажмите кнопку , чтобы закрыть окно сообщения.

  3. В поле Ввод CustomerID введите ALFKIи нажмите кнопку "Журнал заказов".

    Откроется окно сообщения, в котором отображается история заказа для клиента ALFKI.

    Нажмите кнопку , чтобы закрыть окно сообщения.

  4. В поле Ввод orderID введите 123и нажмите кнопку "Сведения о заказе".

    Откроется окно сообщения, в котором отображается текст "Нет результатов".

    Нажмите кнопку , чтобы закрыть окно сообщения.

  5. В меню отладки нажмите кнопку "Остановить отладку".

    Сеанс отладки закрывается.

  6. Если вы завершили эксперимент, щелкните "Закрыть проект " в меню "Файл " и сохраните проект при появлении запроса.

Next Steps

Этот проект можно улучшить, выполнив некоторые изменения. Например, можно создать поле со списком доступных хранимых процедур и разрешить пользователю выбирать процедуру для выполнения. Можно также записывать выходные данных отчетов в текстовый файл.

См. также