|
Trouver une ressource
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
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
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
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 à inserer. Est
XML dans SQL server [ par lorenzo2603 ]
Bonjour à tous!! Je manipule des fichiers XML et je voudrai enregistrer les donné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ées SQL server express. Mon but est que tous les matins, je charge la base de donné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<?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
|
|