| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 
 |  
#region Ecriture
 
	/// <summary>
	/// Écrit des données avec OleDb.
	/// </summary>
	/// <param name="paramConnexion">Les paramètres pour mapper la destination des données.</param>
	/// <param name="table">Les données à écrire.</param>
	private static void EcrireTableOleDb(string paramConnexion, System.Data.DataTable table)
	{
		try
		{
			/* Ouverture de la connexion */
			OleDbConnection connexion = new OleDbConnection(paramConnexion);
			connexion.Open();
 
			/* Préparation de l'exécution des requêtes */
			OleDbCommand commande = new OleDbCommand();
			commande.Connection = connexion;
			commande.CommandType = CommandType.Text;
 
			/* Création de la structure des données */
			commande.CommandText = TestBDToExcelForm.DonnerRequeteCreationExcel(table);
			commande.ExecuteNonQuery();
 
			/* Insertion des données par ligne */
			foreach (DataRow ligne in table.Rows)
			{
				commande.CommandText = TestBDToExcelForm.DonnerRequeteInsertionExcel(
					table.TableName, ligne);
				commande.ExecuteNonQuery();
			}
 
			/* Fermeture de la connexion */
			connexion.Close();
		}
		catch (Exception exception)
		{
			MessageBox.Show("Erreur EcrireDonneesOleDb : \n" + exception);
		}
	}
 
#endregion
 
#region Fonctions Excel
 
	/// <summary>
	/// Donne une requête pour Excel permettant de créer la table donnée.
	/// </summary>
	/// <param name="table">La table à créer.</param>
	/// <returns></returns>
	private static string DonnerRequeteCreationExcel(System.Data.DataTable table)
	{
		/* Variables locales */
		string requete = null;
		int index = -1;
 
		/* Initialisation de la requête */
		requete = "CREATE TABLE [" + table.TableName + "$] (";
 
		/* Ajout des informations sur les champs */
		foreach (DataColumn colonne in table.Columns)
		{
			/* Nom du champs */
			requete += "[" + colonne.ColumnName + "] ";
 
			/* Type du champs */
			switch (colonne.DataType.Name)
			{
				case ("Int32"):
					requete += "INTEGER";
					break;
 
				default:
					requete += "VARCHAR(255)";
					break;
			}
 
			/* Fin des informations sur le champs */
			requete += ", ";
		}
 
		/* Retrait éventuel de ", " en trop */
		index = requete.LastIndexOf(", ");
		if (index == (requete.Length - 2))
			requete = requete.Substring(0, index);
 
		/* Finalisation de la requête */
		requete += ")";
 
		return requete;
	}
 
	/// <summary>
	/// Donne une requête pour Excel permettant l'insertion d'une ligne donnée.
	/// </summary>
	/// <param name="nomTable">le nom de la table contenant la ligne.</param>
	/// <param name="ligne">La ligne à ajouter.</param>
	/// <returns></returns>
	private static string DonnerRequeteInsertionExcel(string nomTable, DataRow ligne)
	{
		/* Variables locales */
		string requete = null;
		int index = -1;
 
		/* Initialisation de la requête */
		requete = "INSERT INTO [" + nomTable + "$] VALUES (";
 
		/* Ajout des données de la ligne */
		foreach (Object valeur in ligne.ItemArray)
			requete += "'" + valeur.ToString() + "', ";
 
		/* Retrait éventuel de ", " en trop */
		index = requete.LastIndexOf(", ");
		if (index == (requete.Length - 2))
			requete = requete.Substring(0, index);
 
		/* Finalisation de la requête */
		requete += ")";
 
		return requete;
	}
 
#endregion | 
Partager