Wie SQL Server-Prozeduren in ASP.NET mit Visual Basic .NET

Eine Microsoft Visual C# .NET Version dieses Artikels finden Sie unter
320916 .
Eine Microsoft Visual j#-Version dieses Artikels finden Sie unter
320622 .
Eine Microsoft Visual Basic 6.0-Version dieses Artikels finden Sie unter
164485 .
Eine Microsoft Visual Basic 6.0-Version dieses Artikels finden Sie unter
300488 .

IN DIESER AUFGABE

Zusammenfassung

Dieser Artikel beschreibt, wie Sie ASP.NET und ADO.NET mit Visual Basic .NET erstellen und Aufrufen einer Microsoft SQL Server gespeicherte Prozedur mit einem Eingabeparameter und einem Ausgabeparameter.

Das Codebeispiel in diesem Artikel prüft zunächst, ob die gespeicherte Prozedur, die Sie erstellen in der Datenbank vorhanden ist. Wenn die gespeicherte Prozedur nicht vorhanden ist, erstellt der Code eine gespeicherte Prozedur, die einen Parameter die Authors -Tabelle basierend auf den Nachnamen gesucht und gibt die passenden Zeilen und die Anzahl der Zeilen in einem Ausgabeparameter zurückgegeben.

Dieser Artikel beschreibt auch ein Webformular erstellen, das eine einfache Benutzeroberfläche bietet. Das Webformular enthält die folgenden Elemente:
  • Ein Textfeld, in dem der Benutzer die Bedingung eingibt.
  • Ein DataGrid -Steuerelement, in der die Suchergebnisse angezeigt.
  • Ein Label -Steuerelement, die Anzahl der zurückgegebenen Datensätze anzeigt.
  • Ein Button -Steuerelement, das die gespeicherte Prozedur aufruft, wenn die Schaltfläche geklickt wird.

Voraussetzungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks auf, die benötigt werden:
  • Microsoft SQL Server, Version 7.0 oder höher
  • Microsoft Visual Studio .NET
  • Microsoft Visual Basic .NET
  • Berechtigungen für die gespeicherte Prozedur in der Datenbank erstellen
Es wird vorausgesetzt, dass Sie mit folgenden Themen vertraut sind:
  • SQL Server gespeicherte Prozeduren

Ein ASP.NET Projekt erstellen und Steuerelemente hinzufügen

In diesem Abschnitt erstellen Sie ein ASP.NET Projekt und erstellen die grundlegende Benutzeroberfläche. Beachten Sie, dass diese Schritte Microsoft Visual Basic .NET Code. Gehen Sie folgendermaßen vor, um das Projekt zu erstellen:
  1. Klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Microsoft Visual Studio .NETund klicken Sie dann auf Microsoft Visual Studio .NET.
  2. Klicken Sie auf der Visual Studio .NET Startseite auf Neues Projekt.
  3. Klicken Sie im Dialogfeld Neues Projekt klicken Sie unter Projekttypenauf Visual Basic-Projekte , und klicken Sie unter Vorlagenauf ASP.NET Web Application .
  4. Geben Sie im Feld Name einen Namen für Ihre Web-Anwendung, und klicken Sie auf OK.
  5. Webformular hinzuzufügen Sie die folgenden Serversteuerelemente, und legen Sie die Eigenschaften wie in der Tabelle:
    SteuerelementID-EigenschaftText-Eigenschaft
    BezeichnunglblLastNameNachnamen des Autors eingeben:
    TextfeldtxtLastName%
    SchaltflächebtnGetAuthorsAutoren abrufen
    BezeichnunglblRowCount(Zeilenanzahl)

  6. Web-Formular ein DataGrid -Steuerelement aus der Toolbox ziehen und dann die
    Name -Eigenschaft GrdAuthors.
  7. Mit der rechten Maustaste in des Rasters, und klicken Sie auf Autoformat.
  8. Klicken Sie auf Professional 1 für das Schema, und klicken Sie auf OK.

Erstellen der "GetAuthorsByLastName" gespeicherte Prozedur

Verwenden Sie den folgenden Transact-SQL-Code zum Erstellen der Prozedur "GetAuthorsByLastName" gespeichert:
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

Dieser Code enthält zwei Parameter: @au_lname und @RowCount. Der @au_lname-Parameter ist ein Eingabeparameter, der die Suchzeichenfolge "like" in der Tabelle Authors suchen abruft. Der @RowCount-Parameter ist ein Ausgabeparameter, der Variable @@ROWCOUNT verwendet die betroffenen Zeilen zu.

Erstellen und Ausführen der gespeicherten Prozedur

Zugriff auf SQL Server-Datenbanken müssen bietet neue Objekte wie SqlDataReader und SqlDataAdapter System.Data.SqlClient -Namespace importieren. SqlDataReader können eine Vorwärtsstreams von Zeilen aus einer SQL Server-Datenbank zu lesen.
DataAdapter stellt einen Satz von Datenbefehlen und eine Verbindung, die das DataSet -Objekt füllen und Aktualisieren einer SQL Server-Datenbank verwenden können.

ADO.NET führt zudem das DataSet -Objekt ist eine speicherresidente Darstellung von Daten, die ein konsistentes relationales Programmiermodell unabhängig von der Datenquelle bereitstellt. Der Code in diesem Abschnitt verwendet alle Objekte.
  1. Doppelklicken Sie auf das Webformular.
  2. Fügen Sie folgenden Code in den Deklarationsbereich Ihres Webformulars, die am Anfang des Code-Fensters angezeigt wird:
    Imports System.DataImports System.Data.SqlClient

  3. Sicherstellen, dass die gespeicherte Prozedur bereits existiert und eine neue gespeicherte Prozedur erstellen, verwenden Sie ein SqlCommand -Objekt mit SqlDataReader -Objekt. SqlCommand können Sie alle SQL-Befehle für die Datenbank ausführen. Rufen Sie die ExecuteReader -Methode des SqlCommand SqlDataReaderzurückgeben, die passenden Zeilen für Ihre Abfrage enthält.

    Fügen Sie folgenden Code im Ereignis Page_Load des Web Form:
    '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. Rufen Sie die gespeicherte Prozedur im Click -Ereignis der Schaltfläche BtnGetAuthors und dann verwenden Sie SqlDataAdapter -Objekt, um Ihre gespeicherte Prozedur ausführen. Parameter für die gespeicherte Prozedur, und der Parameter -Auflistung des SqlDataAdapter -Objekts anfügen.

    Fügen Sie den folgenden Code nach dem Page_Load -Ereignis:
    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. Im Projektmappen-Explorer mit der rechten Maustaste der ASPX-Seite und dann auf als Startseite festlegen.
  6. Speichern Sie das Projekt, und klicken Sie auf Starten in Visual Studio .NET. Beachten Sie, dass das Projekt kompiliert und die Standardseite wird ausgeführt.
  7. Geben Sie Nachnamen des Autors in das Textfeld ein und dann auf
    Autor erhalten. Beachten Sie, dass die gespeicherte Prozedur aufgerufen und zurückgegebenen Zeilen DataGridfüllen.

    Sie können SQL Server-Suchzeichenfolge wie
    G%, die alle Autoren nach Nachnamen mit dem Buchstaben "G" zurückgegeben

Problembehandlung:

  • Wenn Sie mit der Datenbank verbinden können, stellen Sie sicher, dass ConnectionString ordnungsgemäß auf den Server verweist, auf dem SQL Server ausgeführt wird.
  • Wenn mit der Datenbank verbinden, aber wenn Sie Probleme beim Erstellen der gespeicherten Prozedur sicherstellen müssen Sie die erforderlichen Berechtigungen zum Erstellen von gespeicherten Prozeduren in der Datenbank, der Sie eine Verbindung herstellen.

Referenzen

Weitere Informationen finden Sie unter den folgenden Themen in der Dokumentation zu Microsoft.NET Framework Software Development Kit (SDK):Weitere Informationen finden Sie im folgenden:
Wyke, R. Allen und Sultan Rehman und Brad Leupen. XML-Programmierung (Core Reference). Microsoft Press, 2001.
Weitere Informationen finden Sie in folgenden Microsoft Trainings- & -Kurs:Weitere Informationen zum Ausführen dieser Aufgabe mit Microsoft Active Server Pages finden Sie der Microsoft Knowledge Base:
300488 SQL ausführen gespeicherter Prozeduren aus einer ASP-Seite
Eigenschaften

Artikelnummer: 306574 – Letzte Überarbeitung: 20.01.2017 – Revision: 2

Feedback