IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ ASP.NET/VB.NET

logo
Sommaire > ADO.NET 2.0 > Requêtes
        Comment récupérer les données résultants d'une requette ?
        Comment remplir une dataTable sans passer par un dataAdapter ?
        Comment puis-je exécuter une procédure stockée ?
        Comment exécuter une requête dont le texte comprend une quote simple ?
        Comment exécuter une requête paramétrée ?
        Comment exécuter une requête non SELECT ?
        Comment exécuter une requête SELECT ?



Comment récupérer les données résultants d'une requette ?
auteur : David Pedehourcq
Il y a en fait 2 moyens de récupérer les données d'une requette :
  • On les récupère sous forme de flux en lecture seule, en avant seulement, à l'aide d'un datareader.
  • On les stocke en mémoire dans une structure appellée dataset, facilitant ainsi l'ajout, la mise à jours et la suppression des données.


  • Que vous utilisiez l'une ou l'autre des méthodes, leduke à rédigé 2 excellents articles qui vous permettrons de récupérer les données résultants d'une requette.

    lien : fr Les objets DataAdapter et Dataset dans ADO.NET
    lien : fr ADO.NET : Connection, Command et DataReader

    Comment remplir une dataTable sans passer par un dataAdapter ?
    auteur : David Pedehourcq
    Voici un exemple ou l'on crée et on remplis un DataTable en code-behind
    
    					Dim tuple As DataRow
    					Dim table As new DataTable
    					Dim col1 As New DataColumn("Col1", GetType(System.Double))
    					Dim col2 As New DataColumn("Col", GetType(System.String))
    					'on ajoute les colonnes à la datatable
    					table.Columns.Add(col1)
    					table.Columns.Add(col2)
    					'on crée un rows
    					tuple = table.NewRow()
    					'on le remplis
    					tuple.Item(0) = 1
    					tuple.Item(1) = "Première tuple de mon datatable"
    					'on l'ajoute à la table
    					table.Rows.Add(tuple)
    					'on crée un rows
    					tuple = table.NewRow()
    					'on le remplis
    					tuple.Item(0) = 2
    					tuple.Item(1) = "deuxième tuple de mon datatable"
    					'on l'ajoute à la table
    					table.Rows.Add(tuple)
    				
    
    lien : fr Cours d'ADO.NET

    Comment puis-je exécuter une procédure stockée ?
    auteurs : Thomas Lebrun, Immobilis, nico-pyright(c)
    Pour pouvoir exécuter une procédure stockée, vous devez utiliser un objet SqlCommand et indiquer à sa propriété CommandType que vous désirez utiliser une procédure stockée.
    
    					Public Sub ProcedureStockee()
    					' Creation de la fabrique
    					Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings("ChaineDeConnexion").ProviderName)
    					' Objet connection
    					Using connection As IDbConnection = factory.CreateConnection()
    					connection.ConnectionString = ConfigurationManager.ConnectionStrings("ChaineDeConnexion").ConnectionString
    					connection.Open()
    					' Objet Command
    					Using command As IDbCommand = factory.CreateCommand()
    					command.Connection = connection
    					' On indique que l'on souhaite utiliser une procédure stockée
    					command.CommandType = CommandType.StoredProcedure
    					' On donne le nom de cette procédure stockée
    					command.CommandText = "CustOrderHist"
    					''/ On execute la commande
    					command.ExecuteNonQuery()
    					End Using
    					End Using
    					End Sub
    				
    

    Comment exécuter une requête dont le texte comprend une quote simple ?
    auteurs : abelman, Immobilis, nico-pyright(c)
    Pour exécuter une requête contenant une quote simple, il faut utiliser les fr requêtes paramétrées. On peut aussi faire plus simple en doublant les quotes avant d'exécuter la requête.
    
    					
    Public Sub Parametree()
    	' Creation de la fabrique
    	Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings("ChaineDeConnexion").ProviderName)
    	' Objet connection
    	Using connection As IDbConnection = factory.CreateConnection()
    		connection.ConnectionString = ConfigurationManager.ConnectionStrings("ChaineDeConnexion").ConnectionString
    		connection.Open()
    		' Objet Command
    		Using command As IDbCommand = factory.CreateCommand()
    			command.CommandText = "SELECT * FROM usr_contract WHERE ctr_ref = @contract AND ctr_exg_ref = @exg"
    			command.Connection = connection
    			' Paramètres
    			Dim param As IDataParameter = factory.CreateParameter()
    			param.ParameterName = "@contract"
    			param.DbType = DbType.String
    			param.Value = "FTE"
    			command.Parameters.Add(param)
    			Dim param1 As IDataParameter = factory.CreateParameter()
    			param1.ParameterName = "@exg"
    			param1.DbType = DbType.String
    			param1.Value = "SBF"
    			command.Parameters.Add(param1)
    
    			' Object datareader
    			Using reader As IDataReader = command.ExecuteReader()
    				While reader.Read()
    					Dim i As Integer
    					For i = 0 To reader.FieldCount - 1
    						If Not (reader(i) Is DBNull.Value) Then
    							Console.Write(reader(i).ToString())
    						Else
    							Console.Write("NULL")
    						End If
    						If (i < reader.FieldCount) Then
    							Console.Write("|")
    						End If
    					Next
    					Console.WriteLine()
    				End While
    			End Using
    		End Using
    	End Using
    End Sub
    				
    

    Comment exécuter une requête paramétrée ?
    auteurs : abelman, Immobilis, nico-pyright(c)
    Il est possible de passer des paramètres à des requêtes SQL.
    Exemple avec SQL Server
    
    					Imports System.Data.SqlClient
    
    					'Chaîne de connexion
    					Dim connectString As String = "database=equities;server=JV01;User ID=samfisher;pwd=echelon"
    					'Objet connection
    					Dim connection As SqlConnection = New SqlConnection(connectString)
    					'Ouverture
    					connection.Open()
    					'Objet Command
    					Dim command As SqlCommand = New SqlCommand("SELECT * FROM usr_contract WHERE " + _
    					"ctr_ref = @contract AND ctr_exg_ref = @exg", _
    					connection)
    					'Paramètres
    					command.Parameters.Add(New SqlParameter("@contract", SqlDbType.VarChar, 5))
    					command.Parameters("@contract").Value = "FTE"
    					command.Parameters.Add(New SqlParameter("@exg", SqlDbType.VarChar, 8))
    					command.Parameters("@exg").Value = "SBF"
    					'Object datareader
    					Dim reader As SqlDataReader = command.ExecuteReader()
    					Dim row As Object()
    					While reader.Read()
    
    					If row Is Nothing Then
    					row = New Object(reader.FieldCount - 1) {}
    					End If
    					reader.GetValues(row)
    					For i As Integer = 0 To row.GetLength(0) - 1
    					If Not row(i) Is DBNull.Value Then
    					Console.Write(row(i))
    					Else
    					Console.Write("NULL")
    					End If
    					If i < row.GetUpperBound(0) Then
    					Console.Write(" | ")
    					End If
    					Next
    					Console.WriteLine()
    					End While
    					'Fermeture reader
    					reader.Close()
    					'Fermeture base
    					connection.Close()
    				
    

    Comment exécuter une requête non SELECT ?
    auteurs : abelman, Immobilis, nico-pyright(c)
    On utilise la méthode ExecuteNonQuery de l'objet Command.
    Exemple valable pour tout type de base de données supporté par ADO.NET 2
    
    					Public Sub NonSelect()
    					' Creation de la fabrique
    					Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings("ChaineDeConnexion").ProviderName)
    					' Objet connection
    					Using connection As IDbConnection = factory.CreateConnection()
    					connection.ConnectionString = ConfigurationManager.ConnectionStrings("ChaineDeConnexion").ConnectionString
    					connection.Open()
    					' Objet Command
    					Using command As IDbCommand = factory.CreateCommand()
    					command.CommandText = "UPDATE usr_contract set ctr_n = ctr_n + 1"
    					command.Connection = connection
    					' On indique que l'on souhaite utiliser du texte
    					command.CommandType = CommandType.Text
    					' On execute la commande
    					Console.WriteLine("Nombre de lignes affectées {0}", command.ExecuteNonQuery())
    					End Using
    					End Using
    					End Sub
    				
    
    Consulter la page cours pour ADO.NET


    Comment exécuter une requête SELECT ?
    auteurs : abelman, Immobilis, nico-pyright(c)
    On utilise les objets Command et DataReader.
    Exemple avec SQL Server
    
    					
    Public Sub RqSelect()
    	' Creation de la fabrique
    	Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings("ChaineDeConnexion").ProviderName)
    	' Objet connection
    	Using connection As IDbConnection = factory.CreateConnection()
    		connection.ConnectionString = ConfigurationManager.ConnectionStrings("ChaineDeConnexion").ConnectionString
    		connection.Open()
    		' Objet Command
    		Using command As IDbCommand = factory.CreateCommand()
    			command.CommandText = "SELECT * FROM usr_contract"
    			command.Connection = connection
    			' Object datareader
    			Using reader As IDataReader = command.ExecuteReader()
    				While reader.Read()
    					Dim i As Integer
    					For i = 0 To reader.FieldCount - 1
    						If Not (reader(i) Is DBNull.Value) Then
    							Console.Write(reader(i).ToString())
    						Else
    							Console.Write("NULL")
    							If (i < reader.FieldCount) Then
    								Console.Write("|")
    							End If
    						End If
    					Next
    					Console.WriteLine()
    				End While
    			End Using
    		End Using
    	End Using
    End Sub
    				
    


    Consultez les autres F.A.Q's


    Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.