Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTISEUR XML VERS SQL


Information sur la source

Catégorie :Base de données Source .NET ( DotNet ) Classé sous : xml, sql, transformation, conversion Niveau : Initié Date de création : 30/12/2004 Vu / téléchargé: 15 739 / 1 026

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

Ce code permet d'ouvrir, de lire et de transformer un fichier XML en une requete SQL. Il permet également d'executer la requete SQL sur un serveur SQL tout en choissisant la base dans la quelle on souhaite executer la requete (test réaliser avec le MSDE gratuit telechargeable sur le site de microsoft).
Le code est réaliser avec sharpdevelop qui lui aussi est gratuit.
2 fichiers xml sont fournit dans le zip pour tester l'application.
Meme sans connexion SQL valide il est possible de tester la conversion XML -> SQL

 

Source

  • /* 01/11/2004 at 10:06
  • (`-()_.-=-.
  • /66 , , \
  • =(o_/=//_( /======`
  • ~"` ~"~~` tely
  • Created by Clemence.
  • */
  • using System;
  • using System.Windows.Forms;
  • using System.IO;
  • using System.Data;
  • using System.Data.SqlClient;
  • namespace DefaultNamespace
  • {
  • public class MainForm : System.Windows.Forms.Form
  • {
  • private System.Windows.Forms.MenuItem enregistrer;
  • private System.Windows.Forms.RichTextBox affichage;
  • private System.Windows.Forms.MenuItem quitter;
  • private System.Windows.Forms.MenuItem menuItem7;
  • private System.Windows.Forms.MenuItem ouvrir;
  • private System.Windows.Forms.DataGrid Grille;
  • private System.Windows.Forms.MenuItem menuItem2;
  • private System.Windows.Forms.MenuItem menuItem1;
  • private System.Windows.Forms.DataGrid xml;
  • private System.Windows.Forms.MenuItem menuItem6;
  • private System.Windows.Forms.MenuItem menuItem5;
  • private System.Windows.Forms.RichTextBox requete;
  • private System.Windows.Forms.MainMenu mainMenu1;
  • private System.Windows.Forms.MenuItem aide;
  • private System.Windows.Forms.ComboBox ChoixBase;
  • private System.Windows.Forms.MenuItem sql;
  • private System.Windows.Forms.MenuItem menuItem10;
  • // déclaration de mes variables
  • private SqlConnection MaSqlCnx = new SqlConnection();
  • private OpenFileDialog MaBoite = new OpenFileDialog();
  • private DataSet unDS = new DataSet();
  • private string sCreate = "";
  • private SqlCommand MySqlCmd = new SqlCommand();
  • private SaveFileDialog MaSauvegarde = new SaveFileDialog();
  • private StreamWriter sEcrire;
  • private DataSet dsXml = new DataSet();
  • private DataTable dtSource = null;
  • private SqlDataAdapter da = null;
  • private DataSet ds = new DataSet();
  • public MainForm()
  • {
  • InitializeComponent();
  • }
  • [STAThread]
  • public static void Main(string[] args)
  • {
  • Application.Run(new MainForm());
  • }
  • #region Windows Forms Designer generated code
  • /// <summary>
  • /// This method is required for Windows Forms designer support.
  • /// Do not change the method contents inside the source code editor. The Forms designer might
  • /// not be able to load this method if it was changed manually.
  • /// </summary>
  • private void InitializeComponent() {
  • this.menuItem10 = new System.Windows.Forms.MenuItem();
  • this.sql = new System.Windows.Forms.MenuItem();
  • this.ChoixBase = new System.Windows.Forms.ComboBox();
  • this.aide = new System.Windows.Forms.MenuItem();
  • this.mainMenu1 = new System.Windows.Forms.MainMenu();
  • this.requete = new System.Windows.Forms.RichTextBox();
  • this.menuItem5 = new System.Windows.Forms.MenuItem();
  • this.menuItem6 = new System.Windows.Forms.MenuItem();
  • this.xml = new System.Windows.Forms.DataGrid();
  • this.menuItem1 = new System.Windows.Forms.MenuItem();
  • this.menuItem2 = new System.Windows.Forms.MenuItem();
  • this.Grille = new System.Windows.Forms.DataGrid();
  • this.ouvrir = new System.Windows.Forms.MenuItem();
  • this.menuItem7 = new System.Windows.Forms.MenuItem();
  • this.quitter = new System.Windows.Forms.MenuItem();
  • this.affichage = new System.Windows.Forms.RichTextBox();
  • this.enregistrer = new System.Windows.Forms.MenuItem();
  • ((System.ComponentModel.ISupportInitialize)(this.xml)).BeginInit();
  • ((System.ComponentModel.ISupportInitialize)(this.Grille)).BeginInit();
  • this.SuspendLayout();
  • //
  • // menuItem10
  • //
  • this.menuItem10.Index = 2;
  • this.menuItem10.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  • this.aide});
  • this.menuItem10.Text = "?";
  • //
  • // sql
  • //
  • this.sql.Index = 1;
  • this.sql.Text = "SQL";
  • this.sql.Click += new System.EventHandler(this.SQL);
  • //
  • // ChoixBase
  • //
  • this.ChoixBase.Location = new System.Drawing.Point(8, 24);
  • this.ChoixBase.Name = "ChoixBase";
  • this.ChoixBase.Size = new System.Drawing.Size(152, 21);
  • this.ChoixBase.TabIndex = 3;
  • this.ChoixBase.Text = "-----Selection----";
  • //
  • // aide
  • //
  • this.aide.Index = 0;
  • this.aide.Text = "A propos";
  • this.aide.Click += new System.EventHandler(this.Aide);
  • //
  • // mainMenu1
  • //
  • this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  • this.menuItem1,
  • this.menuItem5,
  • this.menuItem10});
  • //
  • // requete
  • //
  • this.requete.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
  • | System.Windows.Forms.AnchorStyles.Right)));
  • this.requete.Location = new System.Drawing.Point(568, 56);
  • this.requete.Name = "requete";
  • this.requete.Size = new System.Drawing.Size(452, 136);
  • this.requete.TabIndex = 1;
  • this.requete.Text = "";
  • //
  • // menuItem5
  • //
  • this.menuItem5.Index = 1;
  • this.menuItem5.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  • this.menuItem6,
  • this.menuItem2});
  • this.menuItem5.Text = "Affichage";
  • //
  • // menuItem6
  • //
  • this.menuItem6.Index = 0;
  • this.menuItem6.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  • this.menuItem7,
  • this.sql});
  • this.menuItem6.Text = "Afficher";
  • //
  • // xml
  • //
  • this.xml.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  • | System.Windows.Forms.AnchorStyles.Left)
  • | System.Windows.Forms.AnchorStyles.Right)));
  • this.xml.CaptionForeColor = System.Drawing.SystemColors.ActiveCaptionText;
  • this.xml.DataMember = "";
  • this.xml.HeaderForeColor = System.Drawing.SystemColors.ControlText;
  • this.xml.Location = new System.Drawing.Point(568, 208);
  • this.xml.Name = "xml";
  • this.xml.Size = new System.Drawing.Size(452, 208);
  • this.xml.TabIndex = 2;
  • //
  • // menuItem1
  • //
  • this.menuItem1.Index = 0;
  • this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  • this.ouvrir,
  • this.enregistrer,
  • this.quitter});
  • this.menuItem1.Text = "Fichiers";
  • //
  • // menuItem2
  • //
  • this.menuItem2.Index = 1;
  • this.menuItem2.Text = "Requette";
  • this.menuItem2.Click += new System.EventHandler(this.Requette);
  • //
  • // Grille
  • //
  • this.Grille.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  • | System.Windows.Forms.AnchorStyles.Left)
  • | System.Windows.Forms.AnchorStyles.Right)));
  • this.Grille.CaptionForeColor = System.Drawing.SystemColors.ActiveCaptionText;
  • this.Grille.DataMember = "";
  • this.Grille.HeaderForeColor = System.Drawing.SystemColors.ControlText;
  • this.Grille.Location = new System.Drawing.Point(568, 432);
  • this.Grille.Name = "Grille";
  • this.Grille.Size = new System.Drawing.Size(452, 184);
  • this.Grille.TabIndex = 4;
  • //
  • // ouvrir
  • //
  • this.ouvrir.Index = 0;
  • this.ouvrir.Shortcut = System.Windows.Forms.Shortcut.CtrlO;
  • this.ouvrir.Text = "Ouvrir";
  • this.ouvrir.Click += new System.EventHandler(this.Ouvrir);
  • //
  • // menuItem7
  • //
  • this.menuItem7.Index = 0;
  • this.menuItem7.Text = "XML";
  • this.menuItem7.Click += new System.EventHandler(this.XML);
  • //
  • // quitter
  • //
  • this.quitter.Index = 2;
  • this.quitter.Shortcut = System.Windows.Forms.Shortcut.AltF4;
  • this.quitter.Text = "Quitter";
  • this.quitter.Click += new System.EventHandler(this.Quitter);
  • //
  • // affichage
  • //
  • this.affichage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
  • | System.Windows.Forms.AnchorStyles.Left)));
  • this.affichage.Location = new System.Drawing.Point(8, 56);
  • this.affichage.Name = "affichage";
  • this.affichage.Size = new System.Drawing.Size(544, 560);
  • this.affichage.TabIndex = 0;
  • this.affichage.Text = "";
  • //
  • // enregistrer
  • //
  • this.enregistrer.Index = 1;
  • this.enregistrer.Shortcut = System.Windows.Forms.Shortcut.CtrlS;
  • this.enregistrer.Text = "Enregistrer";
  • this.enregistrer.Click += new System.EventHandler(this.Enregistrer);
  • //
  • // MainForm
  • //
  • this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  • this.ClientSize = new System.Drawing.Size(1028, 621);
  • this.Controls.Add(this.Grille);
  • this.Controls.Add(this.ChoixBase);
  • this.Controls.Add(this.xml);
  • this.Controls.Add(this.requete);
  • this.Controls.Add(this.affichage);
  • this.Menu = this.mainMenu1;
  • this.Name = "MainForm";
  • this.Text = "MainForm";
  • this.Load += new System.EventHandler(this.MainFormLoad);
  • ((System.ComponentModel.ISupportInitialize)(this.xml)).EndInit();
  • ((System.ComponentModel.ISupportInitialize)(this.Grille)).EndInit();
  • this.ResumeLayout(false);
  • }
  • #endregion
  • private void Quitter( object sender, System.EventArgs e)
  • {
  • this.Close(); //Fermeture de l'application
  • }
  • private void Ouvrir( object sender, System.EventArgs e)
  • {
  • MaBoite.Filter = ""; // initialisation
  • xml.Text = "";
  • requete.Text = "";
  • MaBoite.Filter= "XML (*.xml)|*.xml| tous (*.*)|*.*"; // définition de types de fichiers ouvrables
  • MaBoite.FilterIndex = 0;
  • MaBoite.RestoreDirectory = true;
  • MaBoite.ShowDialog();
  • if (MaBoite.FileName != "")
  • {
  • try
  • {
  • unDS.ReadXml(MaBoite.FileName); // l'ouverture du fichier est placée dans le try
  • }
  • catch (System.Exception ex) // traitement d'un fichier xml non valide
  • {
  • MessageBox.Show (ex.Message);
  • string MsgErreur = Convert.ToString(ex);
  • int idebut = MsgErreur.IndexOf("(")+1;
  • int ifin = MsgErreur.IndexOf(")");
  • int iTaille = ifin - idebut;
  • string sChaine = MsgErreur.Substring(idebut,iTaille);
  • string sChaineFerme = "</"+sChaine+">";
  • sChaine = "<"+sChaine+">";
  • StreamReader unSR = new StreamReader(MaBoite.FileName);
  • string sTest = unSR.ReadToEnd();
  • unSR.Close();
  • int iEJdepart=sTest.IndexOf(sChaine);
  • int iEJarrive=sTest.IndexOf(sChaineFerme);
  • int iEJdepart2=sTest.LastIndexOf(sChaine);
  • int iEJarrive2=sTest.LastIndexOf(sChaineFerme);
  • while(iEJdepart!=iEJdepart2)
  • {
  • string sDebut = sTest.Substring(0,iEJdepart2);
  • string sFin = sTest.Substring(iEJarrive2+sChaineFerme.Length);
  • sTest = sDebut+sFin;
  • iEJdepart2 = sTest.LastIndexOf(sChaine);
  • iEJarrive2 = sTest.LastIndexOf(sChaineFerme);
  • }
  • sTest = sTest.Replace("encoding="+'\u0022'+"UTF-16"+'\u0022',"");
  • xml.Text = sTest;
  • StreamWriter sw = new StreamWriter(MaBoite.FileName);
  • sw.WriteLine(sTest);
  • sw.Close();
  • }
  • StreamReader SR = new StreamReader(MaBoite.FileName); // affichage du code XML du fichier ouvert
  • affichage.Text = unDS.GetXml(); // le xml lu est affiché à l'écran
  • }
  • }
  • private void Enregistrer( object sender, System.EventArgs e)
  • {
  • if(requete.Text =="")
  • {
  • MessageBox.Show("Il n'y a rien à sauvegarder !!");
  • }
  • else
  • {
  • MaSauvegarde.Filter= "texte (*.txt) |*.txt|tous (*.*) |*.*";
  • MaSauvegarde.FilterIndex = 0;
  • MaSauvegarde.RestoreDirectory = true;
  • MaSauvegarde.ShowDialog();
  • if(MaSauvegarde.FileName != "")
  • {
  • try // on place un try sur l'écriture
  • {
  • sEcrire = new StreamWriter(MaSauvegarde.FileName, true);
  • sEcrire.WriteLine(requete.Text);
  • sEcrire.Close();
  • }
  • catch(System.Exception ex)
  • {
  • MessageBox.Show(ex.Message); // si l'écriture échoue on en informe l'utilisateur
  • }
  • }
  • }
  • }
  • private void XML( object sender, System.EventArgs e)
  • {
  • if(MaBoite.FileName!= "")
  • {
  • string filePath =MaBoite.FileName;
  • try
  • {
  • dsXml.ReadXml(filePath);
  • xml.DataSource = dsXml;
  • }
  • catch(System.Exception ex)
  • {
  • MessageBox.Show (ex.Message);
  • string MsgErreur = Convert.ToString(ex);
  • int idebut = MsgErreur.IndexOf("(")+1;
  • int ifin = MsgErreur.IndexOf(")");
  • int iTaille = ifin - idebut;
  • string sChaine = MsgErreur.Substring(idebut,iTaille);
  • string sChaineFerme = "</"+sChaine+">";
  • sChaine = "<"+sChaine+">";
  • StreamReader unSR = new StreamReader(MaBoite.FileName);
  • string sTest = unSR.ReadToEnd();
  • unSR.Close();
  • int iEJdepart=sTest.IndexOf(sChaine);
  • int iEJarrive=sTest.IndexOf(sChaineFerme);
  • int iEJdepart2=sTest.LastIndexOf(sChaine);
  • int iEJarrive2=sTest.LastIndexOf(sChaineFerme);
  • while(iEJdepart!=iEJdepart2)
  • {
  • string sDebut = sTest.Substring(0,iEJdepart2);
  • string sFin = sTest.Substring(iEJarrive2+sChaineFerme.Length);
  • sTest = sDebut+sFin;
  • iEJdepart2 = sTest.LastIndexOf(sChaine);
  • iEJarrive2 = sTest.LastIndexOf(sChaineFerme);
  • }
  • sTest = sTest.Replace("encoding="+'\u0022'+"UTF-16"+'\u0022',"");
  • xml.Text = sTest;
  • StreamWriter sw = new StreamWriter(MaBoite.FileName);
  • sw.WriteLine(sTest);
  • sw.Close(); // si l'écriture échoue on en informe l'utilisateur
  • }
  • }
  • }
  • private void SQL( object sender, System.EventArgs e)
  • {
  • requete.Text = ""; // on initialise la zone d'affichage et notre chaîne de création à vide
  • sCreate = "";
  • foreach(DataTable DT in unDS.Tables) // pour chaque table on va effectuer les opérations contenues dans le foreach
  • {
  • sCreate = " CREATE TABLE " + DT.TableName + " ("; // on récupère le nom de la table à créer
  • foreach(DataColumn DC in DT.Columns) // on va préciser les noms et types des champs de la table
  • {
  • int iLong = 0; // déclaration et initialisation d'un compteur
  • iLong = DC.ColumnName.Length; // on stocke dans l'entier iLong le nombre de caractères du nom du champ
  • if (DC.ColumnName.Substring(0,(iLong-3)) == "_ID") // si le champ finit par "_ID" on rentre dans le si
  • {
  • if(DC.ColumnName.Substring(0,(iLong-3)) == DT.TableName) // si le nom du champ est le même que celui de la table on rentre dans le si
  • {
  • DC.ColumnName += " " + DC.DataType + " PRIMARY KEY "; // si le champ finit par _ID et porte le même nom que la table alors on le définit comme clef primaire
  • }
  • else // le champ finit bien par _ID mais a un nom different de la table
  • {
  • // formatage de la syntaxe des clefs étrangères pour les insérer dans SQL serveur
  • DC.ColumnName += " "+DC.DataType+ " CONSTRAINT " + "FK_" + DC.ColumnName.Substring(0,(iLong-3)) + "_" + DT.TableName + " FOREIGN KEY REFERENCE " + DC.ColumnName.Substring(0,(iLong-3)) + " (" + DC.ColumnName;
  • }
  • }
  • else // si le champ ne finit pas par _ID
  • {
  • DC.ColumnName += " " + DC.DataType; // on ajoute juste le type des données contenues dans le champ
  • }
  • sCreate += DC.ColumnName + ","; // dans tout les cas on ajoute une virgule et on retourne à la ligne
  • }
  • int iTailleInsert = sCreate.Length;
  • sCreate = sCreate.Substring(0,(iTailleInsert-1)); // supression de la dernière virgule
  • sCreate += ") \n"; // on referme la dernière parenthèse et on retourne à la ligne
  • }
  • // maintenant gérer l'affichage de l'insertion des données
  • foreach(DataTable DT in unDS.Tables) // les opérations du foreach seront executées pour chaque table
  • {
  • for(int j=0;j<DT.Rows.Count;j++) // pour chaque ligne on effectue les instructions du for
  • {
  • sCreate += " INSERT INTO " + DT.TableName + " VALUES ( ";
  • for(int i=0;i<DT.Columns.Count;i++) // pour chaque champ de la table on effectue cette boucle
  • {
  • // On stocke sous forme de chaîne toutes les données contenues dans les champs
  • string srow = Convert.ToString(unDS.Tables[DT.TableName].Rows[j][i]); // lecture données grâce aux compteurs i et j
  • srow = srow.Replace("'","''"); // pour éviter les problèmes de syntaxe sql on double les ' qui pourraient être situés dans les chaînes de données
  • sCreate += "'" + srow + "'" + ","; // on formate la chaîne pour améliorer l'affichage
  • }
  • int iTaille = sCreate.Length;
  • sCreate = sCreate.Substring(0,(iTaille-1)); // suppression de la dernière virgule
  • sCreate += ") \n";
  • }
  • }
  • sCreate = sCreate.Replace("System.String","varchar(255)"); // on modifie l'affichage des types de données pour les rendre exploitables sous SQL
  • sCreate = sCreate.Replace("System.Int32","int");
  • requete.Text = sCreate; // on affiche à l'écran le résultat (enfin on aimerait ...)
  • }
  • private void Aide(object sender, System.EventArgs e)
  • {
  • MessageBox.Show("Génerateur de code SQL");
  • }
  • private void Requette(object sender, System.EventArgs e)
  • {
  • try{
  • Grille.DataSource = null;
  • dtSource = null;
  • da = null;
  • if(requete.Text != "")
  • {
  • da = new SqlDataAdapter(requete.Text, MaSqlCnx);
  • MaSqlCnx.ConnectionString = "Integrated security = SSPI ; server = CLEM_PORTABLE ; database =" + ChoixBase.SelectedItem.ToString();
  • //MaSqlCnx.ConnectionString = "server = votre_serveur; user id = sa ;password = your_password"; database =" + ChoixBase.SelectedItem.ToString() ;// pour un serveur distant
  • MaSqlCnx.Open(); // ouverture de la connexion
  • MySqlCmd.Connection = MaSqlCnx;
  • da.Fill(ds,"toto"); // remplissage du dataser à l'aide du dataAdapter
  • dtSource = ds.Tables[0]; // définition d'un objet datatable à partir du dataset
  • Grille.DataSource = dtSource; // remplissage de la grille à partir du datatable
  • }
  • }
  • catch(System.Exception ex)
  • {
  • MessageBox.Show(ex.Message);
  • }
  • finally
  • {
  • MaSqlCnx.Close(); // dans tout les cas on ferme la connexion
  • }
  • }
  • private void MainFormLoad(object sender, System.EventArgs e)
  • {
  • //MaSqlCnx.ConnectionString = "server = votre_serveur; user id = sa ;password = your_password"; // pour un serveur distant
  • MaSqlCnx.ConnectionString = "Integrated security = SSPI ; server = CLEM_PORTABLE";
  • try // on teste l'ouverture de la connexion
  • {
  • MaSqlCnx.Open(); // ouverture de la connexion
  • MySqlCmd.Connection = MaSqlCnx;
  • MySqlCmd.CommandText = "SELECT NAME FROM SYSDATABASES ORDER BY name ASC" ;
  • SqlDataReader monSqlDR = MySqlCmd.ExecuteReader();
  • while(monSqlDR.Read())
  • {
  • ChoixBase.Items.Add(monSqlDR.GetValue(0).ToString()) ; // à chaque base trouvée on va rajouter une option dans la list box
  • }
  • MaSqlCnx.Close();
  • }
  • catch(System.Exception ex)
  • {
  • MessageBox.Show(ex.Message);
  • }
  • }
  • }
  • }
/* 01/11/2004 at 10:06

    (`-()_.-=-.
    /66  ,  ,  \
  =(o_/=//_(   /======`
      ~"` ~"~~`    tely

  Created by Clemence.
 */
 
using System;
using System.Windows.Forms;
using System.IO;
using System.Data;
using System.Data.SqlClient;

namespace DefaultNamespace
{

	public class MainForm : System.Windows.Forms.Form
	{
		private System.Windows.Forms.MenuItem enregistrer;
		private System.Windows.Forms.RichTextBox affichage;
		private System.Windows.Forms.MenuItem quitter;
		private System.Windows.Forms.MenuItem menuItem7;
		private System.Windows.Forms.MenuItem ouvrir;
		private System.Windows.Forms.DataGrid Grille;
		private System.Windows.Forms.MenuItem menuItem2;
		private System.Windows.Forms.MenuItem menuItem1;
		private System.Windows.Forms.DataGrid xml;
		private System.Windows.Forms.MenuItem menuItem6;
		private System.Windows.Forms.MenuItem menuItem5;
		private System.Windows.Forms.RichTextBox requete;
		private System.Windows.Forms.MainMenu mainMenu1;
		private System.Windows.Forms.MenuItem aide;
		private System.Windows.Forms.ComboBox ChoixBase;
		private System.Windows.Forms.MenuItem sql;
		private System.Windows.Forms.MenuItem menuItem10;
		// déclaration de mes variables
		private SqlConnection MaSqlCnx = new SqlConnection();
		private OpenFileDialog MaBoite = new OpenFileDialog();
		private DataSet unDS = new DataSet();
		private string sCreate = "";
		private SqlCommand MySqlCmd = new SqlCommand(); 	
		private SaveFileDialog MaSauvegarde = new SaveFileDialog();
		private StreamWriter sEcrire;
		private DataSet dsXml = new DataSet();
		private DataTable dtSource = null;
		private SqlDataAdapter da = null;
		private DataSet ds = new DataSet();
		
		
		public MainForm()
		{
		
			InitializeComponent();
	
		}
		
		[STAThread]
		public static void Main(string[] args)
		{
			Application.Run(new MainForm());
		}
		#region Windows Forms Designer generated code
		/// <summary>
		/// This method is required for Windows Forms designer support.
		/// Do not change the method contents inside the source code editor. The Forms designer might
		/// not be able to load this method if it was changed manually.
		/// </summary>
		private void InitializeComponent() {
			this.menuItem10 = new System.Windows.Forms.MenuItem();
			this.sql = new System.Windows.Forms.MenuItem();
			this.ChoixBase = new System.Windows.Forms.ComboBox();
			this.aide = new System.Windows.Forms.MenuItem();
			this.mainMenu1 = new System.Windows.Forms.MainMenu();
			this.requete = new System.Windows.Forms.RichTextBox();
			this.menuItem5 = new System.Windows.Forms.MenuItem();
			this.menuItem6 = new System.Windows.Forms.MenuItem();
			this.xml = new System.Windows.Forms.DataGrid();
			this.menuItem1 = new System.Windows.Forms.MenuItem();
			this.menuItem2 = new System.Windows.Forms.MenuItem();
			this.Grille = new System.Windows.Forms.DataGrid();
			this.ouvrir = new System.Windows.Forms.MenuItem();
			this.menuItem7 = new System.Windows.Forms.MenuItem();
			this.quitter = new System.Windows.Forms.MenuItem();
			this.affichage = new System.Windows.Forms.RichTextBox();
			this.enregistrer = new System.Windows.Forms.MenuItem();
			((System.ComponentModel.ISupportInitialize)(this.xml)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.Grille)).BeginInit();
			this.SuspendLayout();
			// 
			// menuItem10
			// 
			this.menuItem10.Index = 2;
			this.menuItem10.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
						this.aide});
			this.menuItem10.Text = "?";
			// 
			// sql
			// 
			this.sql.Index = 1;
			this.sql.Text = "SQL";
			this.sql.Click += new System.EventHandler(this.SQL);
			// 
			// ChoixBase
			// 
			this.ChoixBase.Location = new System.Drawing.Point(8, 24);
			this.ChoixBase.Name = "ChoixBase";
			this.ChoixBase.Size = new System.Drawing.Size(152, 21);
			this.ChoixBase.TabIndex = 3;
			this.ChoixBase.Text = "-----Selection----";
			// 
			// aide
			// 
			this.aide.Index = 0;
			this.aide.Text = "A propos";
			this.aide.Click += new System.EventHandler(this.Aide);
			// 
			// mainMenu1
			// 
			this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
						this.menuItem1,
						this.menuItem5,
						this.menuItem10});
			// 
			// requete
			// 
			this.requete.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
						| System.Windows.Forms.AnchorStyles.Right)));
			this.requete.Location = new System.Drawing.Point(568, 56);
			this.requete.Name = "requete";
			this.requete.Size = new System.Drawing.Size(452, 136);
			this.requete.TabIndex = 1;
			this.requete.Text = "";
			// 
			// menuItem5
			// 
			this.menuItem5.Index = 1;
			this.menuItem5.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
						this.menuItem6,
						this.menuItem2});
			this.menuItem5.Text = "Affichage";
			// 
			// menuItem6
			// 
			this.menuItem6.Index = 0;
			this.menuItem6.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
						this.menuItem7,
						this.sql});
			this.menuItem6.Text = "Afficher";
			// 
			// xml
			// 
			this.xml.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
						| System.Windows.Forms.AnchorStyles.Left) 
						| System.Windows.Forms.AnchorStyles.Right)));
			this.xml.CaptionForeColor = System.Drawing.SystemColors.ActiveCaptionText;
			this.xml.DataMember = "";
			this.xml.HeaderForeColor = System.Drawing.SystemColors.ControlText;
			this.xml.Location = new System.Drawing.Point(568, 208);
			this.xml.Name = "xml";
			this.xml.Size = new System.Drawing.Size(452, 208);
			this.xml.TabIndex = 2;
			// 
			// menuItem1
			// 
			this.menuItem1.Index = 0;
			this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
						this.ouvrir,
						this.enregistrer,
						this.quitter});
			this.menuItem1.Text = "Fichiers";
			// 
			// menuItem2
			// 
			this.menuItem2.Index = 1;
			this.menuItem2.Text = "Requette";
			this.menuItem2.Click += new System.EventHandler(this.Requette);
			// 
			// Grille
			// 
			this.Grille.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
						| System.Windows.Forms.AnchorStyles.Left) 
						| System.Windows.Forms.AnchorStyles.Right)));
			this.Grille.CaptionForeColor = System.Drawing.SystemColors.ActiveCaptionText;
			this.Grille.DataMember = "";
			this.Grille.HeaderForeColor = System.Drawing.SystemColors.ControlText;
			this.Grille.Location = new System.Drawing.Point(568, 432);
			this.Grille.Name = "Grille";
			this.Grille.Size = new System.Drawing.Size(452, 184);
			this.Grille.TabIndex = 4;
			// 
			// ouvrir
			// 
			this.ouvrir.Index = 0;
			this.ouvrir.Shortcut = System.Windows.Forms.Shortcut.CtrlO;
			this.ouvrir.Text = "Ouvrir";
			this.ouvrir.Click += new System.EventHandler(this.Ouvrir);
			// 
			// menuItem7
			// 
			this.menuItem7.Index = 0;
			this.menuItem7.Text = "XML";
			this.menuItem7.Click += new System.EventHandler(this.XML);
			// 
			// quitter
			// 
			this.quitter.Index = 2;
			this.quitter.Shortcut = System.Windows.Forms.Shortcut.AltF4;
			this.quitter.Text = "Quitter";
			this.quitter.Click += new System.EventHandler(this.Quitter);
			// 
			// affichage
			// 
			this.affichage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
						| System.Windows.Forms.AnchorStyles.Left)));
			this.affichage.Location = new System.Drawing.Point(8, 56);
			this.affichage.Name = "affichage";
			this.affichage.Size = new System.Drawing.Size(544, 560);
			this.affichage.TabIndex = 0;
			this.affichage.Text = "";
			// 
			// enregistrer
			// 
			this.enregistrer.Index = 1;
			this.enregistrer.Shortcut = System.Windows.Forms.Shortcut.CtrlS;
			this.enregistrer.Text = "Enregistrer";
			this.enregistrer.Click += new System.EventHandler(this.Enregistrer);
			// 
			// MainForm
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(1028, 621);
			this.Controls.Add(this.Grille);
			this.Controls.Add(this.ChoixBase);
			this.Controls.Add(this.xml);
			this.Controls.Add(this.requete);
			this.Controls.Add(this.affichage);
			this.Menu = this.mainMenu1;
			this.Name = "MainForm";
			this.Text = "MainForm";
			this.Load += new System.EventHandler(this.MainFormLoad);
			((System.ComponentModel.ISupportInitialize)(this.xml)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.Grille)).EndInit();
			this.ResumeLayout(false);
		}
		#endregion
		 private void Quitter( object sender, System.EventArgs e)
		 {
		 	this.Close();																//Fermeture de l'application
		 }
		 private void Ouvrir( object sender, System.EventArgs e)
		 {
		 	MaBoite.Filter = "";														// initialisation 
			xml.Text = "";
			requete.Text = "";
			MaBoite.Filter= "XML (*.xml)|*.xml| tous (*.*)|*.*";                        // définition de types de fichiers ouvrables
			MaBoite.FilterIndex = 0;
			MaBoite.RestoreDirectory = true;
			MaBoite.ShowDialog();				
			if (MaBoite.FileName != "")
				{	
					try
						{
							unDS.ReadXml(MaBoite.FileName);								// l'ouverture du fichier est placée dans le try
						}
					catch (System.Exception ex) 										// traitement d'un fichier xml non valide
					{
						MessageBox.Show (ex.Message);						
						string MsgErreur = Convert.ToString(ex);						
						int idebut = MsgErreur.IndexOf("(")+1;
						int ifin = MsgErreur.IndexOf(")");
						int iTaille = ifin - idebut;
						string sChaine = MsgErreur.Substring(idebut,iTaille);						
						string sChaineFerme = "</"+sChaine+">"; 
						sChaine = "<"+sChaine+">";						
						StreamReader unSR = new StreamReader(MaBoite.FileName);
						string sTest = unSR.ReadToEnd();
						unSR.Close();
						int iEJdepart=sTest.IndexOf(sChaine);
						int iEJarrive=sTest.IndexOf(sChaineFerme);
						int iEJdepart2=sTest.LastIndexOf(sChaine);
						int iEJarrive2=sTest.LastIndexOf(sChaineFerme);
								
					while(iEJdepart!=iEJdepart2)
					{
						string sDebut = sTest.Substring(0,iEJdepart2);
						string sFin = sTest.Substring(iEJarrive2+sChaineFerme.Length);
						sTest =  sDebut+sFin;
						iEJdepart2 = sTest.LastIndexOf(sChaine);
						iEJarrive2 = sTest.LastIndexOf(sChaineFerme);
					}
						sTest = sTest.Replace("encoding="+'\u0022'+"UTF-16"+'\u0022',"");
						
						xml.Text = sTest;
						StreamWriter sw = new StreamWriter(MaBoite.FileName);
						sw.WriteLine(sTest);
						sw.Close();
				}
			StreamReader SR = new StreamReader(MaBoite.FileName);        				  // affichage du code XML du fichier ouvert
			affichage.Text = unDS.GetXml(); 											  // le xml lu est affiché à l'écran
		 		}	
		 }
		 private void Enregistrer( object sender, System.EventArgs e)
		 {
		 	if(requete.Text =="")
		 	{
		 		MessageBox.Show("Il n'y a rien à sauvegarder !!");
		 	}
		 	else
			{
			MaSauvegarde.Filter= "texte (*.txt) |*.txt|tous (*.*) |*.*";
			MaSauvegarde.FilterIndex = 0;
			MaSauvegarde.RestoreDirectory = true;
			MaSauvegarde.ShowDialog();
				if(MaSauvegarde.FileName != "")
				{
					try 																// on place un try sur l'écriture
					{
						sEcrire = new StreamWriter(MaSauvegarde.FileName, true);
						sEcrire.WriteLine(requete.Text);
						sEcrire.Close();
					}
					catch(System.Exception ex)
					{
						MessageBox.Show(ex.Message);									// si l'écriture échoue on en informe l'utilisateur
					}
				}
			}	
		 }
		 private void XML( object sender, System.EventArgs e)
		 {
		 	if(MaBoite.FileName!= "")
		 	{
		 	string filePath =MaBoite.FileName;
		 		try
		 		{
		 		dsXml.ReadXml(filePath);
            	xml.DataSource = dsXml;
		 		}
		 		catch(System.Exception ex)
					{
						MessageBox.Show (ex.Message);						
						string MsgErreur = Convert.ToString(ex);						
						int idebut = MsgErreur.IndexOf("(")+1;
						int ifin = MsgErreur.IndexOf(")");
						int iTaille = ifin - idebut;
						string sChaine = MsgErreur.Substring(idebut,iTaille);						
						string sChaineFerme = "</"+sChaine+">"; 
						sChaine = "<"+sChaine+">";						
						StreamReader unSR = new StreamReader(MaBoite.FileName);
						string sTest = unSR.ReadToEnd();
						unSR.Close();
						int iEJdepart=sTest.IndexOf(sChaine);
						int iEJarrive=sTest.IndexOf(sChaineFerme);
						int iEJdepart2=sTest.LastIndexOf(sChaine);
						int iEJarrive2=sTest.LastIndexOf(sChaineFerme);
								
					while(iEJdepart!=iEJdepart2)
					{
						string sDebut = sTest.Substring(0,iEJdepart2);
						string sFin = sTest.Substring(iEJarrive2+sChaineFerme.Length);
						sTest =  sDebut+sFin;
						iEJdepart2 = sTest.LastIndexOf(sChaine);
						iEJarrive2 = sTest.LastIndexOf(sChaineFerme);
					}
						sTest = sTest.Replace("encoding="+'\u0022'+"UTF-16"+'\u0022',"");
						
						xml.Text = sTest;
						StreamWriter sw = new StreamWriter(MaBoite.FileName);
						sw.WriteLine(sTest);
						sw.Close();									// si l'écriture échoue on en informe l'utilisateur
					}
		 	}
		 }
		 private void SQL( object sender, System.EventArgs e)
		 {
		 	requete.Text = "";															// on initialise la zone d'affichage et notre chaîne de création à vide
			sCreate = "";
			foreach(DataTable DT in unDS.Tables) 										// pour chaque table on va effectuer les opérations contenues dans le foreach
			{
				sCreate = " CREATE TABLE " + DT.TableName + " ("; 						// on récupère le nom de la table à créer
				foreach(DataColumn DC in DT.Columns) 									// on va préciser les noms et types des champs de la table
				{
				int iLong = 0; 															// déclaration et initialisation d'un compteur
					iLong = DC.ColumnName.Length; 										// on stocke dans l'entier iLong le nombre de caractères du nom du champ
					if (DC.ColumnName.Substring(0,(iLong-3)) == "_ID")					// si le champ finit par "_ID" on rentre dans le si
					{
						if(DC.ColumnName.Substring(0,(iLong-3)) == DT.TableName) 		// si le nom du champ est le même que celui de la table on rentre dans le si
						   {
								DC.ColumnName += " " + DC.DataType + " PRIMARY KEY ";   // si le champ finit par _ID et porte le même nom que la table alors on le définit comme clef primaire
						   }
						else 															// le champ finit bien par _ID mais a un nom different de la table
						   {
						   																// formatage de la syntaxe des clefs étrangères pour les insérer dans SQL serveur
						   	DC.ColumnName += " "+DC.DataType+ " CONSTRAINT " + "FK_" + DC.ColumnName.Substring(0,(iLong-3)) + "_" + DT.TableName + " FOREIGN KEY REFERENCE " + DC.ColumnName.Substring(0,(iLong-3)) + " (" + DC.ColumnName; 
						   }
					}
					else 																// si le champ ne finit pas par _ID
					{
						DC.ColumnName += " " + DC.DataType; 							// on ajoute juste le type des données contenues dans le champ
					}					
					sCreate += DC.ColumnName + ",";										// dans tout les cas on ajoute une virgule et on retourne à la ligne
				}
				int iTailleInsert = sCreate.Length;
				sCreate = sCreate.Substring(0,(iTailleInsert-1));						// supression de la dernière virgule
				sCreate += ") \n"; 														// on referme la dernière parenthèse et on retourne à la ligne
			}
																						// maintenant gérer l'affichage de l'insertion des données
			foreach(DataTable DT in unDS.Tables) 										// les opérations du foreach seront executées pour chaque table
			{
					for(int j=0;j<DT.Rows.Count;j++) 									// pour chaque ligne on effectue les instructions du for
					{
						sCreate += " INSERT INTO " + DT.TableName + " VALUES ( ";
						for(int i=0;i<DT.Columns.Count;i++)  							// pour chaque champ de la table on effectue cette boucle
							{
																						// On stocke sous forme de chaîne toutes les données contenues dans les champs
								string srow = Convert.ToString(unDS.Tables[DT.TableName].Rows[j][i]); // lecture données grâce aux compteurs i et j
								srow = srow.Replace("'","''"); 							// pour éviter les problèmes de syntaxe sql on double les ' qui pourraient être situés dans les chaînes de données
								sCreate  += "'" + srow + "'" + ","; 					// on formate la chaîne pour améliorer l'affichage	
							}
					int iTaille =  sCreate.Length;
					sCreate = sCreate.Substring(0,(iTaille-1)); 						// suppression de la dernière virgule
					sCreate += ") \n";
					}
			}
			sCreate = sCreate.Replace("System.String","varchar(255)");					// on modifie l'affichage des types de données pour les rendre exploitables sous SQL
			sCreate = sCreate.Replace("System.Int32","int");
			requete.Text = sCreate;														// on affiche à l'écran le résultat (enfin on aimerait ...)
		 }
		 private void Aide(object sender, System.EventArgs e)
		 {
		 	MessageBox.Show("Génerateur de code SQL");
		 }
		 private void Requette(object sender, System.EventArgs e)
		 {
		 	try{
			Grille.DataSource = null;
			dtSource = null;
			da = null;
			if(requete.Text != "")
			{
				da = new SqlDataAdapter(requete.Text, MaSqlCnx);
				MaSqlCnx.ConnectionString = "Integrated security = SSPI ; server = CLEM_PORTABLE  ; database =" + ChoixBase.SelectedItem.ToString();
				//MaSqlCnx.ConnectionString = "server = votre_serveur; user id = sa ;password = your_password"; database =" + ChoixBase.SelectedItem.ToString() ;// pour un serveur distant
  				MaSqlCnx.Open(); 																		// ouverture de la connexion
				MySqlCmd.Connection = MaSqlCnx;
				da.Fill(ds,"toto"); 																	// remplissage du dataser à l'aide du dataAdapter
				dtSource = ds.Tables[0]; 																// définition d'un objet datatable à partir du dataset
				Grille.DataSource = dtSource; 															// remplissage de la grille à partir du datatable
			}
				}
				catch(System.Exception ex)
				{
					MessageBox.Show(ex.Message);
				}
				finally
				{
					MaSqlCnx.Close(); 																	// dans tout les cas on ferme la connexion
				}
		 }
		 private void MainFormLoad(object sender, System.EventArgs e)
		 {
		 	//MaSqlCnx.ConnectionString = "server = votre_serveur; user id = sa ;password = your_password"; // pour un serveur distant
			MaSqlCnx.ConnectionString = "Integrated security = SSPI ; server = CLEM_PORTABLE";
				try 																					// on teste l'ouverture de la connexion
				{
  					MaSqlCnx.Open(); 																	// ouverture de la connexion
					MySqlCmd.Connection = MaSqlCnx;
					MySqlCmd.CommandText = "SELECT NAME FROM SYSDATABASES ORDER BY name ASC" ;
					SqlDataReader monSqlDR = MySqlCmd.ExecuteReader();
					while(monSqlDR.Read())
					{							
						ChoixBase.Items.Add(monSqlDR.GetValue(0).ToString()) ;								// à chaque base trouvée on va rajouter une option dans la list box		
					}
					MaSqlCnx.Close();	
				}
					catch(System.Exception ex)
					{
						MessageBox.Show(ex.Message);
					}
		 }
		 
	}
}

Conclusion

Pas de bug (connu du moins) mais si vous en trouvez merci de me le faire savoir :)
webmaster@exclis.com
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   XML SQL
    •   bin
      •   Debug
        • XML.exeTélécharger ce fichier [Réservé aux membres club]32 768 octets
        • XML.exe.manifestTélécharger ce fichier [Réservé aux membres club]431 octets
        • XML.pdbTélécharger ce fichier [Réservé aux membres club]24 064 octets
    • AssemblyInfo.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 099 octets
    • bleh.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 544 octets
    • DefaultNamespace.MainForm.resourcesTélécharger ce fichier [Réservé aux membres club]8 226 octets
    • MainForm.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier19 426 octets
    • mp3.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier443 octets
    • XML.cmbxTélécharger ce fichier [Réservé aux membres club]542 octets
    • XML.prjxTélécharger ce fichier [Réservé aux membres club]2 598 octets

Télécharger le zip

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Insert dans sql Server avec xml et xds [ par boubs ] Bonjourj'aimerais inserer des data dans ma BD Sql Server 2000, j'ai un DataSet qui contient toutes les tables et leurs lignes &#224; inserer.&nbsp;Est XML dans SQL server [ par lorenzo2603 ] Bonjour &#224; tous!! Je manipule des fichiers XML et je voudrai enregistrer les donn&#233;es des XML dans SQL server sous forme de table. J'ai beauc BDD SQL vers XML [ par paloxicide ] J'ai une base de donn&#233;es SQL server express. Mon but est que tous les matins, je charge la base de donn&#233;es (je pensais vers un fichier XML) j'ai besoin d'une aide concernant la conversion d'un fichier html en un fichier XML en se basant sur le langage C#. [ par yassinchaouki ] yassin Conseil : XML XSD SQL Base de données [ par PegaseJM ] Bonjour,J'ai une petite application à refondre de VB6 vers C#L'application VB6 utilise une petite base de donneés access (9 tables).J'ai commençé la r Transformation xml par xslt sur CF [ par nonold ] Bonjour,je cherche depuis pas mal de jours deja une solution pour pouvoir faire une transformation d'un xml via xslt pour en faire une page web. Sur l XML à SQL SERVER [ par swyms ] Bonjour à tous !!Voila, j'aimerais me lancer un peu dans les nouvelles technos, et j'aimerais faire une petite application un peu comme un parseur.Mon XML to SQL [ par citt ] Bonjour,Voila j'ai un fichier xml qui se compose en 3 parties dont les deux dernier qui se repete une centaine de fois. Exemple&lt;?xml version="1.0" Image dans une transformation XML->RTF ou XML->PDF [ par DeadEye0112 ] Bonjour,J'ai un problème avec les images et la transformation XSLT.Lors de la création d'un fichier (RTF ou PDF) à l'aide d'un XSLT, je réussis à mett conversion fichier text en XML [ par swyms ] Salut à tous !Je suis en train d'essayer de convertir un fichier texte en xml.Ce fichier texte est structuré, et j'ai donc un identifiant en début de


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode