Vexplore
Messages postés25Date d'inscriptionlundi 22 décembre 2003StatutMembreDernière intervention 8 octobre 2010
-
8 déc. 2004 à 20:35
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 2006
-
17 déc. 2004 à 15:09
Bonjour à tous,
j'ai une petite question sur la rapidité des réponses sur requète ADO.
Je fais une petite applie (sous XP) en VB.net avec un serveur SQL(MS SQL Server) en locale sur la machine.
Ma question est la suivante, vaut-il mieux (sur une table de 1500 enregistrements) :
1) faire 1 requtête (SELECT FROM NomTable Where Colonne = Valeur avec Valeur en clée primaire) qui retourne une seule ligne à traitée. Faire ceci 16 fois (donc 16 connexions, 16 Dataset à remplir...).
OU
2) faire une requête (SELECT * FROM NomTable) qui retourne toute la table et faire mon traitement en VB (donc une seule connexion, mais un gros rapatriement de la table).
??????????
Le fond de ma question est le suivant : comment faire pour avoir la méthode la plus rapide pour la gestion des réponses à mes requête.
--------------------------------------------------
Merci de partager le savoir.
Il n'y a pas de vol, juste de l'échange.
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 8 déc. 2004 à 22:47
labout
Voilà comment je ferai
dsProducts as new DataSet
dim strConnection As String = "Server=localhost;" & _
"DataBase=Northwind;" & _
"Integrated Security=SSPI"
Dim northwindConnection As New SqlConnection(strConnection)
' Le SqlDataAdapter est utilisé pour remplir le DataSet
Dim ProductAdapter As New SqlDataAdapter( _
"SELECT ProductName,Price FROM products",northwindConnection)
ProductAdapter.Fill(dsProducts, PRODUCT_TABLE_NAME)
ProductAdapter.Fill(dsProducts,"Products")
dvProducts = new dataView(dsProducts.Tables("products"),_
"ProductName like '%'",= "ProductName ASC", _
DataViewRowState.OriginalRows)
ensuite si filtre sur "A"
dim strfilter as string
strFilter = "ProductName like A%"
dvProducts.RowFilter=strFilter
ensuite
For i = 0 To dvProducts.Count ' le nb de records
' le premier champ de la ligne i
MsgBox(dvProducts.Item(i).Item(0))
' le deuxième champ de la ligne i
MsgBox(dvProducts.Item(i).Item(1))
' le nom du premier champ
MsgBox(dvProducts.Item(i).DataView.Table.Columns(0).ToString)
' le type du champ
msgbox dvProducts.Item(i).DataView.Table.Columns(0).datatype.name
Next
Vexplore
Messages postés25Date d'inscriptionlundi 22 décembre 2003StatutMembreDernière intervention 8 octobre 2010 8 déc. 2004 à 21:52
Merci labout,
mais je ne peux pas faire de requête alors,
moi il faut que je mette à jour une ligne bien précise.
Je doit faire un "SELECT" sur un dataset, c'est possible ?
Merci de partager le savoir.
Il n'y a pas de vol, juste de l'échange.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Vexplore
Messages postés25Date d'inscriptionlundi 22 décembre 2003StatutMembreDernière intervention 8 octobre 2010 8 déc. 2004 à 22:36
labout,
je crois que g trouvé encore mieux.
Faire une requète pour rapatrier dans un dataset les 16 lignes qui m'interressent.
Faire mes traitement dans le dataset, puis remetrre à jour dans la bd.
ça en vaut vraiment, le coup car ça va me faire modifier sacrément mon code :(
si tu as des idées, n'hésite pas.
PS : j'avais déjà fait des recherche sur sql et j'avais déjà remarque que tu répondais souvent. Quelle surprise quand j'ai vu que tu me répondais ;)
Au nom de tous, merci pour le partage de la connaissance ;)
Merci de partager le savoir.
Il n'y a pas de vol, juste de l'échange.
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 17 déc. 2004 à 14:52
labout
mets donc une cle d'index sur le champ clé et tu verras la différence de 1 à 100
mais je ne comprends pas max(productname) c'ela donne le produit dont le nom est le plus long ???
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 17 déc. 2004 à 15:07
labout
Non pas dans le dataview
Dans SqlServer
Ouvre la table en modification
clic droit Index puis Nouveu enfin sélectionner le champ.
fermer et enregistrer
J'ai vérifié 2700 enreg 15 secondes