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


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

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

ПримечаниеПримечание

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

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

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

ПримечаниеПримечание

На вашем компьютере названия некоторых элементов интерфейса пользователя 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. В меню Вид выберите пункт Панель элементов.

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

    ПримечаниеПримечание

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

  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.

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

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

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