FAQ ASP.NET/C#Consultez toutes les FAQ

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

 
OuvrirSommaireTravailler avec des donnéesADO.NETADO.NET Divers

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

 
Sélectionnez

DataTable dt1 = new DataTable("Test");
DataTable dt2 = new DataTable("Test");
DataSet ds = new DataSet();
ds.Merge(dt1);
ds.Merge(dt2);
				

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

Cette utilisation de la fonction merge du DataSet est décrite ici de manière simpliste pour l'utilisation la plus courante 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 23 mai 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

public class EcrireXML
{
	public static void Main()
	{
		// Création de la chaîne de connexion
		string _ConnectionString =  "Server=Srv1;Database=Northwind;User ID=sa;Password=asdasd"
		// Création de la connexion
		SqlConnection _SqlConnection = new SqlConnection();
		_SqlConnection.ConnectionString = _ConnectionString;

		// Création du SqlDataAdapter
		SqlDataAdapter da = new SqlDataAdapter("Select * from Customers", _SqlConnection);

		// Création d'un DataSet
		DataSet ds = 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("C:\\TestXml.xml");
	}
}
				

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>
</NewDataSet>
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

ADOX.CatalogClass Cat = 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

SqlConnectionStringBuilder conStrbuilder = new SqlConnectionStringBuilder();
conStrbuilder.DataSource = serverName;
conStrbuilder.UserID = uid;
conStrbuilder.Password = pwd;

SqlConnection c = 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 & "'").Length = 0)
	Response.Write(invariantName + "n'existe pas");
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

DataTable providerTable = DbProviderFactories.GetFactoryClasses();

foreach (DataRow row in providerTable.Rows)
	foreach (DataColumn col in providerTable.Columns)
			Response.WriteLine(col.ColumnName + ": " + row(col.ColumnName));

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

 
Sélectionnez

using 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 bool IsFilled(DataSet ds)
{
	return ds.Tables.Count > 0;
}
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 bool IsFilled(DataTable dt)
{
	return dt.Rows.Count > 0;
}
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.