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

Traductions disponibles Traductions disponibles
Numéro d'article: 306574 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

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

Le code exemple dans cet article vérifie en premier lieu si la procédure stockée que vous allez créer 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 nom de famille la table auteurs et renvoie les lignes correspondantes et nombre de lignes qui sont retournées dans un paramètre de sortie.

Cet article montre également comment créer un formulaire Web qui fournit un simple utilisateur interface. Le formulaire Web contient les éléments suivants :
  • Une zone de texte dans lequel l'utilisateur tape la recherche condition.
  • Un contrôle DataGrid qui affiche les résultats de recherche.
  • Un contrôle Label qui affiche le nombre d'enregistrements renvoyés.
  • Un contrôle bouton qui appelle la procédure stockée lorsque le bouton est un clic sur.

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel, infrastructure de réseau et les service packs nécessaires :
  • Microsoft SQL Server version 7.0 ou version ultérieure
  • Microsoft Visual Studio .NET
  • Microsoft Visual Basic .NET
  • Autorisations pour créer la procédure stockée dans la base de données
Cet article suppose que vous êtes familiarisé avec les éléments suivants rubriques :
  • Procédures de SQL Server stockées

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

Dans cette section, vous créez un projet ASP.NET et générer le interface utilisateur de base. Notez que ces procédures utilisent Microsoft Visual Basic .NET code. Pour créer le projet, procédez comme suit :
  1. Cliquez sur Démarrer, pointez sur programmes, pointez sur Microsoft Visual Studio .NETet 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 Visual Basic sous Types de projetset puis cliquez sur L'Application Web ASP.NET sous modèles.
  4. Dans la zone nom , tapez un nom pour votre application Web et puis cliquez sur OK.
  5. Ajoutez les contrôles de serveur suivants au formulaire Web et la valeur les propriétés tels qu'ils sont répertoriés dans la table :
    Réduire ce tableauAgrandir ce tableau
    ContrôlePropriété IDPropriété de texte
    ÉtiquettelblLastNameTapez le nom de l'auteur :
    Zone de textetxtLastName%
    BoutonbtnGetAuthorsObtenir les auteurs
    ÉtiquettelblRowCount(Nombre de lignes)

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

Créer le GetAuthorsByLastName procédure stockée

Utilisez le code Transact-SQL suivant pour créer le 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 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 des objets tels que le 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 qui Vous pouvez utiliser pour remplir l'objet DataSet et mettre à jour une base de données SQL Server.

ADO.NET introduit également l'objet DataSet , qui est une représentation résidente en mémoire de données qui fournit un modèle programmation relationnel cohérent quelle que soit les données source. Le code dans cette section utilise tous ces objets.
  1. Double-cliquez sur le formulaire Web.
  2. Ajoutez le code suivant à la section de déclaration de votre Formulaire Web qui s'affiche en haut de la fenêtre Code :
    Imports System.Data
    Imports 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 SqlCommand d'objet avec un objet SqlDataReader . Vous pouvez utiliser SqlCommand pour exécuter des commandes SQL sur la base de données. Puis appelez la méthode ExecuteReader de SqlCommand pour renvoyer SqlDataReaderqui contient les lignes correspondant à votre requête.

    Ajouter 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 l'ajouter à la collection Parameters de l'objet SqlDataAdapter .

    Après l'événement Page_Load , ajoutez le code suivant :
    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, cliquez à droite sur la page .aspx, puis Cliquez sur Définir comme Page de démarrage.
  6. Enregistrez le projet et puis cliquez sur Démarrer dans Visual Studio .NET. Notez que le projet est compilé et que l'exécution de la page par défaut.
  7. Nom de l'auteur dans la zone de texte, puis tapez Obtenir l'auteur. Notez que la procédure stockée est appelée et que le texte retourné lignes complètent le DataGrid.

    Vous pouvez fournir des chaînes de recherche de type SQL Server tels queG %, qui retourne tous les auteurs par le dernier noms qui commence par la lettre « g ».

Résolution des problèmes

  • Si vous ne pouvez pas vous connecter à la base de données, assurez-vous que la ConnectionString pointe correctement vers le serveur qui exécute SQL Serveur.
  • 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, assurez-vous d'avoir les autorisations appropriées pour créer des procédures stockées dans la base de données à laquelle vous vous connectez.

Références

Pour plus d'informations, consultez les rubriques suivantes dans le Documentation du Kit de développement logiciel (SDK) de.NET Framework de Microsoft :
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 Soultan Rehman et Brad Leupen. XML Programming (Core Reference). Microsoft Press, 2001.
Pour plus d'informations, reportez-vous à la suivante Microsoft Training & Cours de certification :
2389 Programmation avec ADO.NET
Pour les autres 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 Microsoft Base de connaissances :
300488 Comment faire pour exécuter SQL stockées procédures à partir d'une Page ASP

Propriétés

Numéro d'article: 306574 - Dernière mise à jour: jeudi 27 décembre 2012 - Version: 8.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB306574 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 306574
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com