1 2 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