FAQ ASP.NET/VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireTravailler avec des donnéesADO.NETRequêtes

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.

Créé le 12 octobre 2003  par David Pedehourcq

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

Voici un exemple ou l'on crée et on remplis un DataTable en code-behind

 
Sélectionnez

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) 
				
Créé le 18 février 2004  par David Pedehourcq

Lien : Cours d'ADO.NET

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.

 
Sélectionnez

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
				
Mis à jour le 2 mars 2008  par Thomas Lebrun, Immobilis, nico-pyright(c)

Pour exécuter une requête contenant une quote simple, il faut utiliser les requêtes paramétrées. On peut aussi faire plus simple en doublant les quotes avant d'exécuter la requête.

 
Sélectionnez

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
Mis à jour le 2 mars 2008  par abelman, Immobilis, nico-pyright(c)

Il est possible de passer des paramètres à des requêtes SQL.
Exemple avec SQL Server

 
Sélectionnez

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()
				
Mis à jour le 2 mars 2008  par 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

 
Sélectionnez

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

Mis à jour le 2 mars 2008  par abelman, Immobilis, nico-pyright(c)

On utilise les objets Command et DataReader.
Exemple avec SQL Server

 
Sélectionnez

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
Mis à jour le 2 mars 2008  par abelman, Immobilis, nico-pyright(c)
  

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 et 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.