Procédures stockées par l’appel de SQL Server dans ASP.NET à l’aide de Visual Basic .NET

Pour obtenir une version Microsoft Visual C# .NET de cet article, reportez-vous à la section.
320916 .
Pour obtenir une version Microsoft Visual J# .NET de cet article, reportez-vous à la section.
320622 .
Pour obtenir une version Microsoft Visual Basic 6.0 de cet article, reportez-vous à la section.
164485 .
Pour obtenir une version Microsoft Visual Basic 6.0 de cet article, reportez-vous à la section.
300488 .

DANS CETTE TÂCHE.

Résumé

Cet article explique comment utiliser ASP.NET et ADO.NET avec Visual Basic .NET pour créer et pour appeler une de Microsoft SQL Server procédure stockée avec un paramètre d’entrée et un paramètre de sortie.

L’exemple de code dans cet article vérifie d’abord si la procédure stockée que vous créez existe dans la base de données. Si la procédure stockée n’existe pas, le code crée une procédure stockée qui prend un paramètre pour effectuer une recherche basée sur le dernier nom de la table auteurs et renvoie les lignes correspondantes et le nombre de lignes qui sont retournées dans un paramètre de sortie.

Cet article explique également comment créer un formulaire Web qui fournit une interface utilisateur simple. Le formulaire Web comprend les éléments suivants :
  • Une zone de texte dans laquelle l’utilisateur entre la condition de recherche.
  • Un contrôle DataGrid qui affiche les résultats de la recherche.
  • Un contrôle Label qui affiche le nombre d’enregistrements renvoyés.
  • Un contrôle de bouton qui appelle la procédure stockée lorsqu’un clic est effectué sur le bouton.

Configuration requise

La liste suivante met en évidence les matériel, logiciel et infrastructure réseau recommandés ainsi que les service packs qui sont requis :
  • Microsoft SQL Server version 7.0 ou ultérieure
  • Microsoft Visual Studio .NET
  • Microsoft Visual Basic .NET
  • Autorisations nécessaires pour créer la procédure stockée dans la base de données
Cet article suppose que vous maîtrisez les sujets suivants :
  • Procédures SQL Server stockées

Créer un projet ASP.NET et ajouter des contrôles

Dans cette section, vous créez un projet ASP.NET et créez l’interface utilisateur de base. Notez que ces procédures utilisent du code Microsoft Visual Basic .NET. Pour créer le projet, procédez comme suit :
  1. Cliquez sur Démarrer, pointez sur programmes, pointez sur Microsoft Visual Studio .NET, puis cliquez sur Microsoft Visual Studio .NET.
  2. Dans la page de démarrage de Visual Studio .NET, cliquez sur Nouveau projet.
  3. Dans la boîte de dialogue Nouveau projet , cliquez sur Projets de Visual Basic sous Types de projets, puis cliquez sur ASP.NET Web Application sous modèles.
  4. Dans la zone nom , tapez un nom pour votre application Web, puis cliquez sur OK.
  5. Ajoutez les contrôles serveur suivants au formulaire Web et définissez les propriétés comme ils sont répertoriés dans le tableau :
    ContrôlePropriété IDPropriété Text
    ÉtiquettelblLastNameTapez le nom de l’auteur :
    Zone de textetxtLastName%
    BoutonbtnGetAuthorsObtenir les auteurs
    ÉtiquettelblRowCount(Nombre de lignes)

  6. Faites glisser un contrôle serveur DataGrid à partir de la boîte à outils vers le formulaire Web et définissez la
    Nom de propriété GrdAuthors.
  7. Avec le bouton droit de la grille, puis cliquez sur mise en forme automatique.
  8. Cliquez sur Professionnel 1 pour le modèle, puis cliquez sur OK.

Créer le GetAuthorsByLastName procédure stockée

Utilisez le code Transact-SQL suivant pour créer la procédure stockée GetAuthorsByLastName :
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

Ce code comprend deux paramètres : @au_lname et @RowCount. Le paramètre @au_lname est un paramètre d’entrée qui obtient la chaîne de recherche pour effectuer une recherche » like"dans la table Authors . Le paramètre @RowCount est un paramètre de sortie qui utilise la variable @@ROWCOUNT pour obtenir les lignes affectées.

Créer et exécuter la procédure stockée

Pour accéder aux bases de données SQL Server, vous devez importer l’espace de noms System.Data.SqlClient , qui fournit de nouveaux objets tels que SqlDataReader et les objets de SqlDataAdapter . Vous pouvez utiliser SqlDataReader pour lire un flux avant uniquement de lignes à partir d’une base de données SQL Server.
DataAdapter représente un ensemble de commandes de données et une connexion de base de données que vous pouvez utiliser pour remplir l’objet DataSet et mettre à jour une base de données SQL Server.

ADO.NET présente également l’objet DataSet , qui est une représentation résidente en mémoire de données qui fournit un modèle de programmation cohérent et relationnel indépendamment de la source de données. Le code dans cette section utilise tous ces objets.
  1. Double-cliquez sur le formulaire Web.
  2. Ajoutez le code suivant à la section déclaration de votre formulaire Web, qui s’affiche en haut de la fenêtre de Code :
    Imports System.DataImports System.Data.SqlClient

  3. Pour vous assurer que la procédure stockée existe et créer une nouvelle procédure stockée, utilisez un objet SqlCommand avec un objet SqlDataReader . Vous pouvez utiliser SqlCommand pour exécuter des commandes SQL sur la base de données. Appelez ensuite la méthode ExecuteReader d’un SqlCommand pour renvoyer SqlDataReader, qui contient les lignes correspondant à votre requête.

    Ajoutez le code suivant dans l’événement Page_Load du formulaire Web :
    '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. Appelez la procédure stockée dans l’événement Click du bouton btnGetAuthors et ensuite utiliser l’objet SqlDataAdapter pour exécuter votre procédure stockée. Vous devez créer des paramètres pour la procédure stockée et les ajouter à la collection Parameters de l’objet SqlDataAdapter .

    Ajoutez le code suivant après l’événement Page_Load :
    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. Dans l’Explorateur de solutions, avec le bouton droit de la page .aspx, puis cliquez sur définir comme Page de démarrage.
  6. Enregistrez le projet, puis cliquez sur Démarrer dans Visual Studio .NET. Notez que le projet est compilé et que la page par défaut s’exécute.
  7. Tapez le nom de l’auteur dans la zone de texte, puis cliquez sur
    Obtenir l’auteur. Notez que la procédure stockée est appelée et que les lignes renvoyées complètent le DataGrid.

    Vous pouvez fournir des chaînes de recherche de type SQL Server telles que
    G %, renvoie tous les auteurs par noms de famille qui commencent par la lettre « g ».

Résolution des problèmes

  • Si vous ne peut pas se connecter à la base de données, assurez-vous que la ConnectionString pointe correctement vers le serveur qui exécute SQL Server.
  • Si vous pouvez vous connecter à la base de données, mais si vous rencontrez des problèmes lorsque vous essayez de créer la procédure stockée, vérifiez que vous avez les autorisations appropriées pour créer des procédures stockées dans la base de données à laquelle vous êtes connecté.

Références

Pour plus d’informations, consultez les rubriques suivantes dans la documentation du Kit de développement (SDK) de Microsoft.NET Framework :
Vue d’ensemble de ADO.NET
http://msdn.microsoft.com/en-us/library/h43ks021.aspx

Groupe de données ADO.NET
http://msdn.microsoft.com/en-us/library/zb0sdh0b(VS.71).aspx

À l’aide de fournisseurs de données .NET pour accéder aux données
http://msdn2.microsoft.com/en-us/library/s7ee2dwt(vs.71).aspx
Pour plus d’informations, reportez-vous au manuel suivant :
Wyke, R. Allen et êtes le ROI Rehman et Brad Leupen. Programmation de XML (Core Reference). Microsoft Press, 2001.
Pour plus d’informations, consultez le cours Microsoft Training & Certification suivant :Pour plus d’informations sur la façon d’effectuer cette tâche à l’aide de Microsoft Active Server Pages, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
300488 comment exécuter SQL procédures stockées à partir d’une Page ASP
Propriétés

ID d'article : 306574 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

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

Commentaires