Jak volání serveru SQL uložených procedur v ASP.NET pomocí jazyka Visual Basic .NET

Microsoft Visual C# .NET verzi tohoto článku naleznete v tématu
320916 .
Microsoft Visual J# .NET verzi tohoto článku naleznete v tématu
320622 .
Microsoft Visual Basic 6.0 verzi tohoto článku naleznete v tématu
164485 .
Microsoft Visual Basic 6.0 verzi tohoto článku naleznete v tématu
300488 .

V TOMTO ÚKOLU

Souhrn

Tento článek ukazuje, jak lze pomocí prostředí ASP.NET a ADO.NET pomocí jazyka Visual Basic .NET vytvořit a volat Microsoft SQL Server uložené procedury s vstupní parametr a výstupní parametr.

Ukázkový kód v tomto článku nejprve zkontroluje, zda uložené procedury, která se vytvoří v databázi existuje. Pokud uložená procedura neexistuje, kód vytvoří uložené procedury, která přijímá jeden parametr, chcete-li hledat v tabulce autoři podle příjmení a vrátí odpovídající řádky a počet řádků vrácených v výstupní parametr.

Tento článek ukazuje, jak vytvořit webový formulář, který poskytuje jednoduché uživatelské rozhraní. Webový formulář obsahuje následující položky:
  • Textové pole, ve kterém uživatel zadá podmínku vyhledávání.
  • Ovládací prvek DataGrid , který zobrazuje výsledky hledání.
  • Ovládací prvek Popisek , který zobrazuje počet vrácených záznamů.
  • Ovládací prvek Button , který volá uložené procedury při klepnutí na tlačítko.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a požadované aktualizace service Pack:
  • Microsoft SQL Server verze 7.0 nebo vyšší
  • Microsoft Visual Studio .NET
  • Microsoft Visual Basic .NET
  • Chcete-li vytvořit uloženou proceduru v databázi oprávnění
Tento článek předpokládá, že jste obeznámeni s následující témata:
  • Uložené procedury SQL serveru

Vytvoření projektu ASP.NET a přidat ovládací prvky

V této části Vytvoření projektu ASP.NET a vytvořit základní uživatelské rozhraní. Všimněte si, že takto pomocí kódu jazyka Microsoft Visual Basic .NET. Chcete-li vytvořit projekt, postupujte takto:
  1. Klepněte na tlačítko Start, přejděte na příkaz programy, přejděte na příkaz Microsoft Visual Studio.NETa pak klepněte na položku Microsoft Visual Studio.NET.
  2. Na stránce Visual Studio .NET spusťte klepnutím na tlačítko Nový projekt.
  3. V dialogovém okně Nový projekt klepněte na tlačítko Projekty jazyka Visual Basic v části Typy projektua klepněte na Webovou aplikaci ASP.NET v části šablony.
  4. Do pole název zadejte název pro webovou aplikaci a potom klepněte na tlačítko OK.
  5. Přidat následující serverové ovládací prvky webového formuláře a nastavte vlastnosti, jak jsou uvedeny v tabulce:
    Ovládací prvekVlastnost IDVlastnost text
    PopiseklblLastNameZadejte příjmení autora:
    Textové poletxtLastName%
    TlačítkobtnGetAuthorsAutoři získat
    PopiseklblRowCount(Počet řádků)

  6. Přetáhněte serverový ovládací prvek DataGrid z panelu nástrojů do webového formuláře a poté nastavte
    Vlastnost název na GrdAuthors.
  7. Klepněte pravým tlačítkem myši mřížky a potom klepněte na tlačítko Automatický formát.
  8. Klepněte na tlačítko Professional 1 schématu a potom klepněte na tlačítko OK.

Vytvořit GetAuthorsByLastName uložená procedura

Použijte následující kód jazyka Transact-SQL k vytvoření GetAuthorsByLastName uložená procedura:
Create Procedure GetAuthorsByLastName1 (@au_lname varchar(40), @RowCount int output)  as 

select * from authors where au_lname like @au_lname;

/* @@ROWCOUNT returns the number of rows that are affected by the last statement. */
select @RowCount=@@ROWCOUNT

Tento kód obsahuje dva parametry: @au_lname a @RowCount. Parametr @au_lname je vstupní parametr, který získává vyhledávací řetězec pro vyhledávání "jako" v tabulce autoři . @RowCount parametr je výstupní parametr, který používá proměnnou @@ROWCOUNT získat ovlivněné řádky.

Vytvořit a spustit uloženou proceduru.

Pro přístup k databázím serveru SQL Server, je nutné importovat obor názvů System.Data.SqlClient , který poskytuje nové objekty, například SqlDataReader a SqlDataAdapter objekty. SqlDataReader slouží ke čtení datového proudu pouze pro předávání řádků z databáze serveru SQL Server.
DataAdapter představuje sadu příkazů dat a připojení k databázi, která slouží k vyplnění objektu DataSet a aktualizovat databázi serveru SQL Server.

ADO.NET také zavádí objekt DataSet , který je rezidentní v paměti reprezentace data, která poskytuje relační, konzistentní programovací model bez ohledu na zdroj dat. Kód v tomto oddílu používá všechny tyto objekty.
  1. Poklepejte na webový formulář.
  2. Přidejte následující kód do části prohlášení webový formulář, který se zobrazí v horní části okna kód:
    Imports System.DataImports System.Data.SqlClient

  3. Ujistěte se, zda existuje uložené procedury a vytvoření nové uložené procedury pomocí objektu SqlCommand objektu SqlDataReader . Chcete-li spustit všechny příkazy SQL v databázi můžete použít SqlCommand . Potom voláním ExecuteReader metoda SqlCommand vrátíte SqlDataReader, která obsahuje odpovídající řádky pro dotaz.

    Přidejte následující kód v události Page_Load webový formulář:
    'Only run this code the first time the page is loaded.'The code inside the IF statement is skipped when you resubmit the page.
    If Not IsPostBack Then
    Dim MyConnection As SqlConnection
    Dim MyCommand As SqlCommand
    Dim MyDataReader As SqlDataReader

    'Create a Connection object.
    MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")

    'Create a Command object, and then set the connection.
    'The following SQL statements check whether a GetAuthorsByLastName stored procedure
    'already exists.
    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
    'Set the command type that you will run.
    .CommandType = CommandType.Text

    'Open the connection.
    .Connection.Open()

    'Run the SQL statement, and then get the returned rows to the DataReader.
    MyDataReader = .ExecuteReader()

    'If any rows are retuned, the stored procedure that you are trying
    'to create already exists. Therefore, try to create the stored procedure
    'only if it does not exist.
    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() 'Dispose of the Command object.
    MyConnection.Close() 'Close the connection.
    End With
    End If

  4. Volání uložené procedury události Click pro tlačítko btnGetAuthors a potom spustit uložené procedury pomocí objektu SqlDataAdapter . Musíte vytvořit parametry uložené procedury a připojit ji ke kolekci Parameters objektu SqlDataAdapter .

    Po události Page_Load přidejte následující kód:
    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

    'Create a connection to the SQL Server.
    MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")

    'Create a DataAdapter, and then provide the name of the stored procedure.
    MyDataAdapter = New SqlDataAdapter("GetAuthorsByLastName", MyConnection)

    'Set the command type as StoredProcedure.
    MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure

    'Create and add a parameter to Parameters collection for the stored procedure.
    MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@au_lname", _
    SqlDbType.VarChar, 40))

    'Assign the search value to the parameter.
    MyDataAdapter.SelectCommand.Parameters("@au_lname").Value = Trim(txtLastName.Text)

    'Create and add an output parameter to Parameters collection.
    MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@RowCount", _
    SqlDbType.Int, 4))

    'Set the direction for the parameter. This parameter returns the Rows returned.
    MyDataAdapter.SelectCommand.Parameters("@RowCount").Direction = ParameterDirection.Output

    DS = New DataSet() 'Create a new DataSet to hold the records.
    MyDataAdapter.Fill(DS, "AuthorsByLastName") 'Fill the DataSet with the rows returned.

    'Get the number of rows returned, and then assign it to the Label control.
    'lblRowCount.Text = DS.Tables(0).Rows.Count().ToString() & " Rows Found!"
    lblRowCount.Text = MyDataAdapter.SelectCommand.Parameters(1).Value & " Rows Found!"

    'Set the data source for the DataGrid as the DataSet that holds the rows.
    Grdauthors.DataSource = DS.Tables("AuthorsByLastName").DefaultView

    'Bind the DataSet to the DataGrid.
    'NOTE: If you do not call this method, the DataGrid is not displayed!
    Grdauthors.DataBind()

    MyDataAdapter.Dispose() 'Dispose of the DataAdapter.
    MyConnection.Close() 'Close the connection.
    End Sub

  5. V Průzkumníku řešení klikněte pravým tlačítkem myši na stránku ASPX a potom klepněte na tlačítko nastavit jako úvodní stránku.
  6. Uložte projekt a potom klepněte na tlačítko Spustit v aplikaci Visual Studio .NET. Všimněte si kompilaci projektu a že spustí výchozí stránku.
  7. Do textového pole zadejte příjmení autora a potom klepněte na tlačítko
    Autor získat. Všimněte si volání uložené procedury, že vrácené řádky naplnění ovládacího prvku DataGrid.

    Můžete zadat vyhledávací řetězce typu SQL Server, jako
    G %, která vrací všechny autory podle příjmení začínající písmenem "G"

Poradce při potížích

  • Pokud se nemůžete připojit k databázi, ujistěte se, že ConnectionString správně odkazuje na serveru, na kterém je spuštěn SQL Server.
  • Pokud připojení k databázi, ale pokud dojde k potížím při pokusu vytvořit uloženou proceduru, ujistěte se, že máte správná oprávnění k vytvoření uložené procedury v databázi, ke kterému se připojujete.

Odkazy

Další informace naleznete v následujících tématech dokumentace rozhraní.NET Framework Microsoft Software Development Kit (SDK):Další informace naleznete v následující knize:
Wyke, R. Allen a Sultan Rehman a Brad Leupen. Programování XML (základní referenční). Nakladatelství Microsoft Press, 2001.
Další informace naleznete v následujících Microsoft Training & Certification a kurzu:Další informace o provedení tohoto úkolu pomocí Microsoft Active Server Pages klepněte na následující číslo článku znalostní báze Microsoft Knowledge Base:
300488 jak spustit SQL uložené procedury ze stránky ASP
Vlastnosti

ID článku: 306574 - Poslední kontrola: 20. 1. 2017 - Revize: 2

Váš názor