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
- 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
Sub
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.
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
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
(
)
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
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