Бөлісу құралы:


Пошаговое руководство. Использование только хранимых процедур (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, который у вас есть, и параметры, которые вы используете, определяют эти элементы. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.

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

Предпосылки

Для этого пошагового руководства требуется следующее:

  • В этом пошаговом руководстве для хранения файлов используется выделенная папка ("c:\linqtest3"). Создайте эту папку перед началом пошагового руководства.

  • Пример базы данных Northwind.

    Если у вас нет этой базы данных на компьютере разработки, ее можно скачать на сайте загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных". После скачивания базы данных скопируйте файл 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 в проект

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

Добавление файла кода 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.

    Упорядочение элементов управления как на сопроводительной иллюстрации. Расширьте Form1, чтобы элементы управления удобно размещались.

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

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

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

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

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

    Расширите элементы управления кнопкой, чтобы все текст был видимым.

Для обработки нажатий кнопки

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

  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 = ""
    

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

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

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

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

    Появится форма 1.

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

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

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

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

    С сообщением перечислена история заказов для клиента ALFKI.

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

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

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

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

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

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

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

Дальнейшие шаги

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

См. также