FAQ ASP.NET/VB.NET

FAQ ASP.NET/VB.NETConsultez toutes les FAQ
Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 16 juin 2021
Sommaire→Travailler avec des données→ADO.NET→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 ?
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 : 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
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 : 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.
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 SubPour 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.
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 SubIl 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()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 SubConsulter la page cours pour ADO.NET
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


