Jesteś obecnie w trybie offline. Czekamy na ponowne połączenie z Internetem.

Jak wywoływać procedury przechowywane programu SQL Server w środowisku ASP.NET przy użyciu języka Visual Basic .NET

Ten artykuł został opublikowany wcześniej pod numerem PL306574
Wersja tego artykułu dla języka Microsoft Visual C# .NET: 320916. (strona może być w języku angielskim)
Wersja tego artykułu dla języka Microsoft Visual J# .NET: 320622. (strona może być w języku angielskim)
Wersja tego artykułu dla języka Microsoft Visual Basic 6.0: 164485. (strona może być w języku angielskim)
Wersja tego artykułu dla języka Microsoft Visual Basic 6.0: 300488. (strona może być w języku angielskim)

W TYM ZADANIU

Streszczenie
W tym artykule przedstawiono sposób, w jaki można utworzyć i wywołać procedurę przechowywaną programu Microsoft SQL Server z parametrem wejściowym i wyjściowym za pomocą aplikacji ASP.NET i ADO.NET w języku Visual Basic .NET.

Przykładowy kod w tym artykule sprawdza najpierw, czy nazwa tworzonej procedury przechowywanej już istnieje w bazie danych. Jeśli tak nie jest, tworzony jest kod procedury przechowywanej o jednym parametrze umożliwiającym wyszukanie nazwiska w tabeli Authors oraz parametrze wyjściowym zwracającym pasujące wiersze i ich liczbę.

W tym artykule przedstawiono również sposób utworzenia formularza sieci Web zapewniającego prosty interfejs użytkownika. Na formularzu sieci Web znajdują się następujące elementy:
  • pole tekstowe do wprowadzania kryteriów wyszukiwania,
  • formant DataGrid wyświetlający wyniki wyszukiwania,
  • formant Label wyświetlający liczbę zwróconych rekordów,
  • przycisk Button, którego kliknięcie spowoduje wywołanie procedury przechowywanej.
back to the top

Wymagania

Na następującej liście wymieniono zalecane składniki sprzętu, oprogramowania oraz infrastruktury sieciowej i wymagane dodatki Service Pack:
  • program Microsoft SQL Server 7.0 lub nowszy,
  • program Microsoft Visual Studio .NET,
  • program Microsoft Visual Basic .NET,
  • uprawnienia do tworzenia procedur przechowywanych w bazie danych.
W tym artykule założono, że użytkownik zapoznał się z następującymi zagadnieniami:
  • Procedury przechowywane programu SQL Server
back to the top

Tworzenie projektu ASP.NET i dodawanie kontrolek

W tej sekcji omówiono tworzenie projektu ASP.NET i konstruowanie podstawowego interfejsu użytkownika. Należy zwrócić uwagę, że są to procedury korzystające z kodu programu Microsoft Visual Basic .NET. Aby utworzyć projekt, wykonaj następujące kroki:
  1. Kliknij przycisk Start, wskaż polecenie Programy, wskaż polecenie Microsoft Visual Studio .NET, a następnie kliknij polecenie Microsoft Visual Studio .NET.
  2. Na stronie początkowej programu Visual Studio .NET kliknij przycisk New Project.
  3. W oknie dialogowym New Project kliknij pozycję Visual Basic Projects w obszarze Project Types, a następnie kliknij pozycję ASP.NET Web Application w obszarze Templates.
  4. W polu Nazwa wpisz nazwę aplikacji sieci Web, a następnie kliknij przycisk OK.
  5. Dodaj do formularza sieci Web następujące formanty serwera i skonfiguruj ich właściwości zgodnie z informacjami, które podano w tabeli:
    FormantWłaściwość IDWłaściwość Text
    LabellblLastNameWpisz nazwisko autora:
    PoleTekstowetxtLastName%
    PrzyciskbtnGetAuthorsPobierz autorów
    LabellblRowCount(Licznik wierszy)

  6. Przeciągnij formant serwera DataGrid z przybornika na formularz sieci Web, a następnie ustaw właściwość Name na wartość GrdAuthors.
  7. Kliknij prawym przyciskiem myszy siatkę, a następnie kliknij polecenie Autoformat.
  8. Kliknij schemat Professional 1, a następnie kliknij przycisk OK.
back to the top

Tworzenie procedury składowanej GetAuthorsByLastName

Poniższy kod Transact-SQL umożliwia utworzenie procedury składowanej GetAuthorsByLastName:
Create Procedure GetAuthorsByLastName1 (@au_lname varchar(40), @RowCount int output)  as select * from authors where au_lname like @au_lname; /* @@ROWCOUNT zwraca liczbę wierszy, których dotyczy ostatnia instrukcja. */ select @RowCount=@@ROWCOUNT				
W kodzie tym znajdują się dwa parametry: @au_lname i @RowCount. @Au_lname to parametr wejściowy zawierający ciąg wyszukiwany podczas operacji wyszukiwania „like” wykonywanej w tabeli Authors. @RowCount to parametr wyjściowy zwracający liczbę wierszy za pomocą zmiennej @@ROWCOUNT.

back to the top

Tworzenie i uruchamianie procedury składowanej

Aby uzyskać dostęp do baz danych programu SQL Server, należy zaimportować obszar nazw System.Data.SqlClient, który udostępnia nowe obiekty, takie jak SqlDataReader i SqlDataAdapter. Za pomocą obiektu SqlDataReader można progresywnie odczytywać strumień wierszy z bazy danych programu SQL Server. Obiekt DataAdapter to zestaw poleceń związanych z danymi oraz połączenie bazy danych, dzięki któremu można wypełnić obiekt DataSet i zaktualizować bazę danych programu SQL Server.

W środowisku ADO.NET wprowadzono również obiekt DataSet, który reprezentuje dane rezydentne zapewniające spójny, relacyjny model programowania niezależnie od źródła danych. W kodzie, który znajduje się w tej sekcji, użyto wszystkich tych obiektów.
  1. Kliknij dwukrotnie formularz sieci Web.
  2. Dodaj poniższy kod do sekcji deklaracji (Declaration) formularza sieci Web, w górnej części okna kodu:
    Imports System.DataImports System.Data.SqlClient					
  3. Aby się upewnić, że procedura przechowywana istnieje, i utworzyć nową procedurę przechowywaną, należy użyć obiektu SqlCommand w połączeniu z obiektem SqlDataReader. Za pomocą obiektu SqlCommand można uruchomić dowolne polecenie SQL w bazie danych. Następnie należy wywołać metodę ExecuteReader obiektu SqlCommand, która zwróci obiekt SqlDataReader zawierający wiersze spełniające kryteria kwerendy.

    Dodaj poniższy kod do zdarzenia Page_Load (zdarzenia ładowania strony) formularza sieci Web:
    'Ten kod ma być uruchamiany tylko wtedy, gdy strona jest ładowana po raz pierwszy.'Kod wewnątrz instrukcji IF zostanie pominięty po ponownym przesłaniu strony.If Not IsPostBack Then    Dim MyConnection As SqlConnection    Dim MyCommand As SqlCommand    Dim MyDataReader As SqlDataReader    'Utworzenie obiektu Connection.    MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")    'Utworzenie obiektu Command, a następnie skonfigurowanie połączenia.    'Poniższe instrukcje języka SQL sprawdzają, czy procedura przechowywana GetAuthorsByLastName     'już istnieje.    MyCommand = New SqlCommand("if object_id('pubs..GetAuthorsByLastName') is not null " + "begin" + " if objectproperty(object_id('pubs..GetAuthorsByLastName'), 'IsProcedure')= 1" + " select object_id('pubs..GetAuthorsByLastName')" + " else" + " return " + "end" + " else" + " return", MyConnection)    With MyCommand        'Ustawienie typu uruchamianego polecenia.        .CommandType = CommandType.Text        'Otwarcie połączenia.        .Connection.Open()        'Uruchomienie instrukcji języka SQL, a następnie pobranie zwróconych wierszy do obiektu DataReader.        MyDataReader = .ExecuteReader()        'Jeśli zostały zwrócone jakiekolwiek wiersze, tworzona procedura przechowywana         'już istnieje. Dlatego zostanie podjęta próba utworzenia procedury przechowywanej tylko wtedy,        'gdy jeszcze nie istnieje.        If Not MyDataReader.Read() Then            .CommandText = "create procedure GetAuthorsByLastName (@au_lname varchar(40), " & _                             "@RowCount int output) " & _                             " as select * from authors where au_lname like @au_lname; select @RowCount=@@ROWCOUNT"            MyDataReader.Close()            .ExecuteNonQuery()        Else            MyDataReader.Close()        End If        .Dispose()  'Usunięcie obiektu Command.        MyConnection.Close() 'Zamknięcie połączenia.    End WithEnd If					
  4. Wywołaj procedurę przechowywaną w kodzie zdarzenia Click przycisku btnGetAuthors, a następnie uruchom ją za pomocą obiektu SqlDataAdapter. Należy utworzyć parametry procedury przechowywanej i dołączyć je do kolekcji Parameters obiektu SqlDataAdapter.

    Dodaj poniższy kod po zdarzeniu Page_Load (zdarzeniu ładowania strony):
    Private Sub btnGetAuthors_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetAuthors.Click    Dim DS As DataSet    Dim MyConnection As SqlConnection    Dim MyDataAdapter As SqlDataAdapter    'Utworzenie połączenia z programem SQL Server.    MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")    'Utworzenie obiektu DataAdapter, a następnie wprowadzenie nazwy procedury przechowywanej.    MyDataAdapter = New SqlDataAdapter("GetAuthorsByLastName", MyConnection)    'Ustawienie typu polecenia jako StoredProcedure.    MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure    'Utworzenie i dodanie parametru do kolekcji Parameters dotyczącej procedury przechowywanej.    MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@au_lname", _   SqlDbType.VarChar, 40))    'Przypisanie wartości wyszukiwania do parametru.    MyDataAdapter.SelectCommand.Parameters("@au_lname").Value = Trim(txtLastName.Text)    'Utworzenie i dodanie parametru wyjściowego do kolekcji Parameters.     MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@RowCount", _    SqlDbType.Int, 4))    'Ustawienie kierunku parametru. Ten parametr zawiera zwrócone wiersze.    MyDataAdapter.SelectCommand.Parameters("@RowCount").Direction = ParameterDirection.Output    DS = New DataSet() 'Utworzenie nowego obiektu DataSet przechowującego rekordy.    MyDataAdapter.Fill(DS, "AuthorsByLastName") 'Wypełnienie obiektu DataSet zwróconymi wierszami.    'Pobranie liczby zwróconych wierszy, a następnie przypisanie jej do formantu Label.    'lblRowCount.Text = "Liczba znalezionych wierszy:" & DS.Tables(0).Rows.Count().ToString()    lblRowCount.Text = "Liczba znalezionych wierszy:" & MyDataAdapter.SelectCommand.Parameters(1).Value    'Ustawienie źródła danych formantu DataGrid jako obiektu DataSet przechowującego wiersze.    Grdauthors.DataSource = DS.Tables("AuthorsByLastName").DefaultView    'Powiązanie obiektu DataSet z formantem DataGrid.     'UWAGA: jeśli ta metoda nie zostanie wywołana, formant DataGrid nie będzie wyświetlany!    Grdauthors.DataBind()    MyDataAdapter.Dispose() 'Usunięcie obiektu DataAdapter.    MyConnection.Close() 'Zamknięcie połączenia.End Sub					
  5. W oknie Solution Explorer kliknij prawym przyciskiem myszy stronę .aspx, a następnie kliknij polecenie Set as Start Page.
  6. Zapisz projekt, a następnie kliknij przycisk Start w programie Visual Studio .NET. Zauważ, że projekt został skompilowany i została wyświetlona strona domyślna.
  7. Wpisz nazwisko autora w polu tekstowym, a następnie kliknij przycisk Pobierz autorów. Zostanie wywołana procedura przechowywana zwracająca wiersze, które wypełnią formant DataGrid.

    Można wprowadzić ciągi wyszukiwania programu SQL Server, takie jak G%, zwracające wszystkich autorów, których nazwisko rozpoczyna się na literę „G”.
back to the top

Rozwiązywanie problemów

  • Jeśli nie można połączyć się z bazą danych, należy sprawdzić, czy ciąg połączenia ConnectionString wskazuje prawidłowy serwer z programem SQL Server.
  • Jeśli można się połączyć z bazą danych, ale występują problemy przy próbie utworzenia procedury przechowywanej, należy się upewnić, że posiadane uprawnienia umożliwiają tworzenie procedur przechowywanych w bazie danych, z którą jest nawiązywane połączenie.
back to the top
Materiały referencyjne
Aby uzyskać więcej informacji na ten temat, zobacz następujące tematy w dokumentacji zestawu SDK dla systemu Microsoft .NET Framework:
ADO.NET — omówienie
http://msdn.microsoft.com/pl-pl/library/h43ks021.aspx

Zestaw DataSet środowiska ADO.NET
http://msdn.microsoft.com/pl-pl/library/zb0sdh0b(VS.71).aspx

Korzystanie z dostawców danych systemu .NET w celu uzyskania dostępu do danych
http://msdn.microsoft.com/pl-pl/library/s7ee2dwt(vs.71).aspx
Więcej informacji ogólnych o technologiach ADO.NET i Visual Basic .NET można znaleźć w następujących grupach dyskusyjnych witryny MSDN: Więcej informacji można znaleźć w następującej publikacji:
R. Allen Wyke, Sultan Rehman i Brad Leupen, XML Programming (Core Reference) (Programowanie XML, informacje na temat kodu), Microsoft Press, 2001.
Aby uzyskać więcej informacji, zobacz następujący kurs w witrynie Szkolenia i certyfikacje firmy Microsoft: Aby uzyskać dodatkowe informacje o sposobie wykonywania tego zadania przy użyciu stron Microsoft Active Server Pages, kliknij numer artykułu poniżej w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
300488 Jak uruchomić procedury składowane SQL ze strony ASP (strona może być w języku angielskim)
back to the top
Właściwości

Identyfikator artykułu: 306574 — ostatni przegląd: 10/24/2012 13:23:00 — zmiana: 7.0

Microsoft ASP.NET 1.0, Microsoft ASP.NET 1.1, Microsoft ADO.NET 1.1, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbhowtomaster kbsqlclient kbsystemdata KB306574
Opinia