Przewodnik: Tylko przy użyciu procedur składowanych (Visual Basic)

Ten przewodnik zawiera podstawowy scenariusz LINQ to SQL umożliwiający uzyskiwanie dostępu do danych przy użyciu tylko procedur składowanych. Takie podejście jest często używane przez administratorów baz danych w celu ograniczenia sposobu uzyskiwania dostępu do magazynu danych.

Uwaga

Można również użyć procedur składowanych w aplikacjach LINQ to SQL, aby zastąpić domyślne zachowanie, szczególnie w przypadku Createprocesów , Updatei Delete . Aby uzyskać więcej informacji, zobacz Dostosowywanie operacji wstawiania, aktualizowania i usuwania.

Na potrzeby tego przewodnika użyjesz dwóch metod mapowanych na procedury składowane w przykładowej bazie danych Northwind: CustOrdersDetail i CustOrderHist. Mapowanie odbywa się po uruchomieniu narzędzia wiersza polecenia SqlMetal w celu wygenerowania pliku Visual Basic. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne w dalszej części tego przewodnika.

Ten przewodnik nie opiera się na Projektant relacyjnych obiektów. Deweloperzy korzystający z programu Visual Studio mogą również używać Projektant O/R do implementowania funkcji procedury składowanej. Zobacz LINQ to SQL Tools in Visual Studio (Narzędzia LINQ to SQL Tools w programie Visual Studio).

Uwaga

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Ten przewodnik został napisany przy użyciu programu Visual Basic Development Ustawienia.

Wymagania wstępne

Ten przewodnik wymaga następujących elementów:

  • Ten przewodnik używa dedykowanego folderu ("c:\linqtest3") do przechowywania plików. Przed rozpoczęciem przewodnika utwórz ten folder.

  • Przykładowa bazy danych Northwind.

    Jeśli nie masz tej bazy danych na komputerze dewelopera, możesz pobrać ją z witryny pobierania firmy Microsoft. Aby uzyskać instrukcje, zobacz Pobieranie przykładowych baz danych. Po pobraniu bazy danych skopiuj plik northwnd.mdf do folderu c:\linqtest3.

  • Plik kodu języka Visual Basic wygenerowany z bazy danych Northwind.

    Ten przewodnik został napisany przy użyciu narzędzia SqlMetal z następującym wierszem polecenia:

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

    Aby uzyskać więcej informacji, zobacz SqlMetal.exe (Narzędzie generowania kodu).

Omówienie

Ten przewodnik składa się z sześciu głównych zadań:

  • Konfigurowanie rozwiązania LINQ to SQL w programie Visual Studio.

  • Dodawanie zestawu System.Data.Linq do projektu.

  • Dodawanie pliku kodu bazy danych do projektu.

  • Tworzenie połączenia z bazą danych.

  • Konfigurowanie interfejsu użytkownika.

  • Uruchamianie i testowanie aplikacji.

Tworzenie rozwiązania LINQ to SQL

W tym pierwszym zadaniu utworzysz rozwiązanie programu Visual Studio zawierające niezbędne odwołania do kompilowania i uruchamiania projektu LINQ to SQL.

Aby utworzyć rozwiązanie LINQ to SQL

  1. W menu Plik programu Visual Studio kliknij pozycję Nowy projekt.

  2. W okienku Typy projektów w oknie dialogowym Nowy projekt rozwiń węzeł Visual Basic, a następnie kliknij pozycję Windows.

  3. W okienku Szablony kliknij pozycję Aplikacja formularzy systemu Windows.

  4. W polu Nazwa wpisz SprocOnlyApp.

  5. Kliknij przycisk OK.

    Zostanie otwarty Projektant Windows Forms.

Dodawanie odwołania do zestawu LINQ to SQL

Zestaw LINQ to SQL nie jest uwzględniony w standardowym szablonie aplikacji Windows Forms. Musisz dodać zestaw samodzielnie, jak wyjaśniono w poniższych krokach:

Aby dodać System.Data.Linq.dll

  1. W Eksplorator rozwiązań kliknij pozycję Pokaż wszystkie pliki.

  2. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania, a następnie kliknij polecenie Dodaj odwołanie.

  3. W oknie dialogowym Dodawanie odwołania kliknij pozycję .NET, kliknij zestaw System.Data.Linq, a następnie kliknij przycisk OK.

    Zestaw jest dodawany do projektu.

Dodawanie pliku kodu Northwind do projektu

W tym kroku przyjęto założenie, że użyto narzędzia SqlMetal do wygenerowania pliku kodu z przykładowej bazy danych Northwind. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne we wcześniejszej części tego przewodnika.

Aby dodać plik kodu northwind do projektu

  1. W menu Projekt kliknij pozycję Dodaj istniejący element.

  2. W oknie dialogowym Dodawanie istniejącego elementu przejdź do folderu c:\linqtest3\northwind.vb, a następnie kliknij przycisk Dodaj.

    Plik northwind.vb jest dodawany do projektu.

Tworzenie Połączenie bazy danych

W tym kroku zdefiniujesz połączenie z przykładową bazą danych Northwind. Ten przewodnik używa ścieżki "c:\linqtest3\northwnd.mdf".

Aby utworzyć połączenie z bazą danych

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy Form1.vb, a następnie kliknij polecenie Wyświetl kod.

    Class Form1 jest wyświetlany w edytorze kodu.

  2. Wpisz następujący kod w Form1 bloku kodu:

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

Konfigurowanie interfejsu użytkownika

W tym zadaniu utworzysz interfejs, aby użytkownicy mogli wykonywać procedury składowane w celu uzyskania dostępu do danych w bazie danych. W aplikacji tworzonej za pomocą tego przewodnika użytkownicy mogą uzyskiwać dostęp do danych w bazie danych tylko przy użyciu procedur składowanych osadzonych w aplikacji.

Aby skonfigurować interfejs użytkownika

  1. Wróć do Projektant Windows Forms (Form1.vb[Design]).

  2. W menu Widok kliknij pozycję Przybornik.

    Zostanie otwarty przybornik.

    Uwaga

    Kliknij pinezki AutoHide, aby zachować otwarty przybornik podczas wykonywania pozostałych kroków w tej sekcji.

  3. Przeciągnij dwa przyciski, dwa pola tekstowe i dwie etykiety z przybornika na form1.

    Rozmieść kontrolki tak jak na ilustracji towarzyszącej. Rozwiń pozycję Form1 , aby kontrolki można było łatwo dopasować.

  4. Kliknij prawym przyciskiem myszy pozycję Etykieta1, a następnie kliknij polecenie Właściwości.

  5. Zmień właściwość Text z Label1 na Enter OrderID:.

  6. W ten sam sposób dla etykiety Label2 zmień właściwość Text z Label2 na Enter CustomerID:.

  7. W ten sam sposób zmień właściwość Text przycisku Button1 na Order Details.

  8. Zmień właściwość Text przycisku Button2 na Historia zamówień.

    Poszerz kontrolki przycisku tak, aby cały tekst był widoczny.

Aby obsłużyć kliknięcia przycisku

  1. Kliknij dwukrotnie pozycję Szczegóły zamówienia w formularzu Form1, aby utworzyć procedurę Button1 obsługi zdarzeń i otworzyć edytor kodu.

  2. Wpisz następujący kod w procedurze Button1 obsługi:

    ' 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. Teraz kliknij dwukrotnie przycisk Button2 w formularzu Form1, aby utworzyć Button2 program obsługi zdarzeń i otworzyć edytor kodu.

  4. Wpisz następujący kod w procedurze Button2 obsługi:

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

Testowanie aplikacji

Teraz nadszedł czas na przetestowanie aplikacji. Należy pamiętać, że kontakt z magazynem danych jest ograniczony do jakichkolwiek działań, które mogą wykonać dwie procedury składowane. Te akcje mają zwrócić produkty dołączone do dowolnego wprowadzonego identyfikatora zamówienia lub zwrócić historię produktów uporządkowaną dla każdego wprowadzonego identyfikatora klienta.

Aby przetestować aplikację

  1. Naciśnij klawisz F5, aby uruchomić debugowanie.

    Pojawi się formularz Form1.

  2. W polu Wprowadź identyfikator zamówienia wpisz 10249, a następnie kliknij pozycję Szczegóły zamówienia.

    Pole komunikatu zawiera listę produktów uwzględnionych w zamówieniu 10249.

    Kliknij przycisk OK , aby zamknąć okno komunikatu.

  3. W polu Wprowadź CustomerID wpisz ALFKI, a następnie kliknij pozycję Historia zamówień.

    W polu komunikatu jest wyświetlana historia zamówień klienta ALFKI.

    Kliknij przycisk OK , aby zamknąć okno komunikatu.

  4. W polu Wprowadź identyfikator zamówienia wpisz 123, a następnie kliknij pozycję Szczegóły zamówienia.

    Zostanie wyświetlone okno komunikatu "Brak wyników".

    Kliknij przycisk OK , aby zamknąć okno komunikatu.

  5. W menu Debugowanie kliknij pozycję Zatrzymaj debugowanie.

    Sesja debugowania zostanie zamknięta.

  6. Jeśli skończysz eksperymentować, możesz kliknąć pozycję Zamknij projekt w menu Plik i zapisać projekt po wyświetleniu monitu.

Następne kroki

Ten projekt można ulepszyć, wprowadzając pewne zmiany. Można na przykład wyświetlić listę dostępnych procedur składowanych w polu listy i wybrać procedury do wykonania. Możesz również przesłać strumieniowo dane wyjściowe raportów do pliku tekstowego.

Zobacz też