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.NETADO.NET Divers

Pour fusionner 2 DataTables, il faut les inclures dans un DataSet :

 
Sélectionnez

Dim dt1 As New DataTable("Test")
Dim dt2 As New DataTable("Test")
Dim ds As New DataSet
ds.Merge(dt1)
ds.Merge(dt2)
				

ds.Table(0) représentera la table fusionné. Pour fusionner 2 DataTables il faut qu'elle aient le même nom, sinon une nouvelle table est ajoutée au DataSet.

Cette utilisation de la fonction merge du DataSet est ici décrite de mannière simpliste pour l'utilisation la plus courrante qui en est faite. Pour plus de détail sur cette fonction reportez-vous au cours d'ADO.NET.

Créé le 18 février 2004  par bidou

Lien : Cours d'ADO.NET

Parfois, il est nécessaire de récupérer l'index d'un Row dans un DataTable en ne connaissant que l'index d'un Row du DataView (qui est différent suite à un tri par exemple).
Voici comment faire:

 
Sélectionnez

dataview.Item(x).Row
				

Cette ligne retourne le Row du DataSet correspondant à l'index x du DataView.

Créé le 19 juin 2005  par David Pedehourcq

En utilisant un DataSet et sa méthode WriteXml, vous avez la possibilité d'écrire le contenu d'une table dans un fichier XML.

 
Sélectionnez

Imports System.Data.SqlClient 
Public Class EcrireXML 
	Public Shared Sub Main() 
		'Création de la chaîne de connexion  
		Dim connectString As String = "Server=SRV01;Database=Northwind;User ID=samfisher;Password=echelon"  
		'Création de la connexion  
		Dim connection As SqlConnection = New SqlConnection(connectString) 
		'Création du SqlDataAdapter  
		Dim da As SqlDataAdapter = New SqlDataAdapter("Select * from Customers", connection) 
		'Création d'un DataSet  
		Dim ds As DataSet = New DataSet 
		'Remplissage du DataSet avec le SqlDataAdapter  
		da.Fill(ds, "Customers") 
		'Ecriture du fichier XML au moyen de la méthode WriteXml  
		ds.WriteXml("E:\Temp\TestXml.xml") 
	End Sub 
End Class
				

Voici, après traitement, le contenu du fichier TestXml.xml :

 
Sélectionnez

 <?xml version="1.0" standalone="yes" ?>
- <NewDataSet>
- <myTable>
<CustomerID>ALFKI</CustomerID>
 <CompanyName>Alfreds Futterkiste</CompanyName>
 <ContactName>Maria Anders</ContactName>
  <ContactTitle>Sales Representative</ContactTitle>
  <Address>Obere Str. 57</Address>
  <City>Berlin</City>
  <PostalCode>12209</PostalCode>
  <Country>Germany</Country>
  <Phone>030-0074321</Phone>
  <Fax>030-0076545</Fax>
</myTable>
Créé le 3 octobre 2005  par Thomas Lebrun

Pour créer une base de données Access, il est possible d'utiliser le code suivant:

 
Sélectionnez

Dim Cat As ADOX.CatalogClass = New ADOX.CatalogClass
Cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName)
Créé le 1er février 2006  par Didier Danse

Tout dépend le nombre de fois que vous devez utiliser les données provenant de votre base et ce que vous souhaitez en faire.
Si il s'agit d'une simple lecture des données, utilisez un DataReader car c'est ce que le DataSet utilise en interne pour se remplir.
Si vous devez accéder plusieurs fois à ces données et les modifier, utilisez un DataSet.

Créé le 14 novembre 2007  par Didier Danse

Il est conseillé d'utiliser l'objet SqlConnectionStringBuilder inclu dans le framework .NET 2.0.

 
Sélectionnez

Dim conStrbuilder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder
With conStrbuilder
	.DataSource = serverName
	.UserID = uid
	.Password = pwd
End With
Dim c As SqlConnection = New SqlConnection(conStrbuilder.ConnectionString)
Créé le 1er février 2006  par Didier Danse

Il est possible de lister les providers installés sur une machine. En filtre sur cette liste, il est possible de voir si un provider est installé ou non.

 
Sélectionnez

If DbProviderFactories.GetFactoryClasses.Select("InvariantName='" + invariantName And "'").Length = 0 Then
	Response.Write(invariantName + "n'existe pas")
End If
Créé le 1er février 2006  par Didier Danse

Le framework .NET 2.0 nous amène un objet très intéressant pour ce point. Ainsi, il existe une méthode statique GetFactoryClasses dans l'objet DbProviderFactories.

Comme on peut le voir dans le code qui suit, cette méthode renvoie une DataTable qu'il est possible de parcourir et encore d'utiliser cette DataTable pour afficher dans un composant de liste ou de grille.

 
Sélectionnez

Dim providerTable As DataTable = DbProviderFactories.GetFactoryClasses
For Each row As DataRow In providerTable.Rows
	For Each col As DataColumn In providerTable.Columns
		Response.WriteLine(col.ColumnName + ": " + row(col.ColumnName))
	Next
Next

N'oubliez pas d'inclure cette ligne en début de fichier:

 
Sélectionnez

Imports System.Data.Common
Créé le 1er février 2006  par Didier Danse

Nous avons souvent des pages dont le contenu ne varient que de temps à autre. ASP.NET 2.0 amène la mise en cache d'une page et ce, de manière relativement simple. Effectivement, il suffit d'ajouter une directive au niveau de la page.

 
Sélectionnez

<%@ OutputCache Duration=600 VaryByParam=state SqlDependency="database:table" %> 

Que trouve-t-on dans cette directive? Qu'il s'agit de garder en cache l'information durant 10 minutes, et que les valeurs en cache doivent être rechargées si les données ont été modifiées durant les 10 minutes de mise en cache.

Créé le 29 mai 2006  par Didier Danse

Il suffit de regarder si une ou plusieurs tables sont présentes dans ce DataSet.

 
Sélectionnez

public Function IsFilled(ByVal ds As DataSet)  As Boolean
	Return ds.Tables.Count > 0
End Function
Créé le 4 septembre 2006  par Didier Danse

Il suffit de regarder si une ou plusieurs rows sont présentes dans cette DataTable.

 
Sélectionnez

Public Function IsFilled(ByVal dt As DataTable) As Boolean
	Return dt.Rows.Count > 0
End Function
Créé le 4 septembre 2006  par Didier Danse
  

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.