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

Обновлен: November 2007

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

Bb386955.alert_note(ru-ru,VS.90).gifПримечание.

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

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

В пошаговом руководстве не используется Сред. Объектно-реляционный конструктор. Разработчики, использующие Visual Studio, могут также использовать Сред. Объектно-реляционный конструктор для реализации функций хранимых процедур. Дополнительные сведения см. в разделах Реляционный конструктор объектов и Реляционный конструктор объектов и Реляционный конструктор объектов.

Bb386955.alert_note(ru-ru,VS.90).gifПримечание.

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

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

Предварительные требования

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

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

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

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

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

    Данное пошаговое руководство было написано с использованием средства 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. Нажмите кнопку ОК.

    Откроется конструктор 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[Design]).

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

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

    Bb386955.alert_note(ru-ru,VS.90).gifПримечание.

    Щелкните значок канцелярской кнопки Автоматически скрывать, чтобы оставить панель элементов открытой при выполнении оставшихся действий данного раздела.

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

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

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

  5. Измените свойство Текст с Label1 на Введите код заказа.

  6. Аналогичным образом для подписи Label2 измените значение свойства Текст с Label2 на Введите код клиента:.

  7. Точно так же измените свойство Текст для кнопки Button1 на значение Сведения о заказе.

  8. Измените свойство Текст для кнопки Button2 на значение История заказа.

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

Диалоговое окно

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

  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 и открыть редактор кода, дважды щелкните кнопку Button2 в форме "Form1".

  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. В поле Введите код заказа введите 10249 и нажмите кнопку Сведения о заказе.

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

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

  3. В поле Введите код клиента введите ALFKI и нажмите кнопку История заказа.

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

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

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

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

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

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

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

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

Следующие действия

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

См. также

Основные понятия

Обучение с помощью пошаговых руководств (LINQ to SQL)

Другие ресурсы

Хранимые процедуры (LINQ to SQL)