Vider/supprimer une table de SqlParameter [Résolu]

Signaler
Messages postés
23
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
21 avril 2011
-
Messages postés
23
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
21 avril 2011
-
Bonjour !

JE suis confronté a un petit problème : Je doit remettre a zéro les paramètres de ma classe comme ceci :
public void RAZ()
        {
            this.Cible = "";
            this.CSecteur = "";
            this.EtatVal = 0;
            this.From = "";
            this.GroupBy = "";
            this.Into = "";
            this.IntoDbf = "";
            this.NbLigne = 0;
            this.NomConnection = 0; // a transformer en pointeur        
            this.OrderBy = "";
            this.ResConnect = 0;
            this.Select = "";
            this.SourceDbf = "";
            this.Type = "";
            this.Values = "";
            this.Where = "";            
            this.Tabstring.RemoveRange(0, nb_string);
            this.nb_string = 0;
            // ICI remettre a 0 TabParam
            this.nb_param = 0;
           
        }


TabParam est défini comme ceci en tant que variable globale.

SqlParameter[] TabParam= new SqlParameter[50];



je voudrait pouvoir "vider" ma table pour quelle soit comme a l'origine mais je n'ai pas trouvé un moyen de la détruire puis de la re-déclarer globale
(déja la détruire je ne sais pas )

Si quelqu'un peut m'aider

merci d'avance !
A voir également:

25 réponses

Messages postés
23
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
21 avril 2011

Non c'est pas ça malheureusement :(

j'ai du modifier 2/3 trucs, ça peut venir de la ...

public SqlConnection connection;
        public SqlCommand command;        
        public DataSet Dataset = new DataSet(); 


Ces variables sont devenues public.

 private SqlParameter GetParameter(string varName)
        {

            FieldInfo field = typeof(Fenetre).GetField(varName, BindingFlags.NonPublic | BindingFlags.Static); // ici typeof(Program) est devenu typeof(Fenetre) où Fenetre est ma classe ou il y a les btn_click toussa

            if (field == null)
                throw new ArgumentException("La variable '" + varName + "' n'est pas définie dans la classe Program");

            SqlDbType dbType;
            switch (field.FieldType.FullName)
            {
                case ("System.String"):
                    dbType = SqlDbType.VarChar;
                    break;

                case ("System.Int32"):
                    dbType = SqlDbType.Int;
                    break;

                case ("System.Double"):
                    dbType = SqlDbType.Float;
                    break;

                case ("System.DateTime"):
                    dbType = SqlDbType.DateTime;
                    break;

                default:
                    throw new ArgumentException("Une variable de Type '" + field.FieldType.FullName + "' ne peut pas être converti en SqlDbType");
            }

            
            SqlParameter parameter = new SqlParameter("@" + varName, dbType);
            parameter.Value = field.GetValue(null);
            nb_param++;

            return parameter;
        }


field sur Fenetre maintenant... idem pour Chercheparam et saisievalue

public void Execution(string XExec)
        {

            try
            {

                XExec=XExec.Replace('?', '@');

                //-------------------------------TEST - solution 1 - TEST ----------------------------------

                parser(XExec); // choppe toutes mes variables ? quelquechose dans un Tabstring sans le ?
                for (int i = 0; i < nb_string; i++) // créé les parametres
                {                    
                    trouve = existe(Tabstring[i].ToString());

                    if (!trouve)
                    {
                        
                        TabParam[i] = GetParameter(Tabstring[i].ToString()); // créé le param
                        command.Parameters.Add(ChercheParam(Tabstring[i].ToString())); // ajoute le parametre a la commande 
                        TableDefini.Add(Tabstring[i].ToString());
                        
                    }
                    else
                    {
                        command.Parameters.Add(ChercheParam(Tabstring[i].ToString())); // ajoute le parametre a la commande 
                       
                    }

                }

                //------------------------------ FIN TEST - solution 1 - FIN TEST --------------------------
                command.CommandType = CommandType.Text; 
                command.CommandText = XExec;

                SqlDataReader reader = command.ExecuteReader();
                command.Parameters.Clear();
                this.Found = reader.HasRows;
                reader.Close();

               
                //Dataset = RecupDataSet(command);
                
                   
            }
            catch (Exception e)
            {
                this.NbErrTransac++;
                MessageBox.Show(e.ToString());
            }
        }


et voila pour Execution..

j'ai refait pas mal de trucs mais rien n'y fait j'ai toujours ce problème :(

pour le bouton qui applique le select en fonction de deux liste/textbox pour les valeurs pour tester:

private void btn_select_Click(object sender, EventArgs e)
        {

            LANGAGE2SQL L_LANGAGE2SQL = new LANGAGE2SQL();
            string wheretmp="";
            if (textBox2.Text != "" && comboBox1.SelectedItem.ToString() != "")
            {
                wheretmp = comboBox1.SelectedItem.ToString() + "=?G_Etendue";
               
                if (textBox1.Text != "" && comboBox2.SelectedItem.ToString() != "")
                    wheretmp = wheretmp + comboBox2.SelectedItem.ToString() + "=?G_CAction";


                G_Etendue = Convert.ToInt32(textBox2.Text);
                G_CAction = (textBox2.Text);

                L_LANGAGE2SQL.RAZ();
                L_LANGAGE2SQL.Connect();
                L_LANGAGE2SQL.CSecteur = "";
                L_LANGAGE2SQL.EtatVal = 3;
                L_LANGAGE2SQL.Type = "SELECT";
                L_LANGAGE2SQL.Select = "*";
                L_LANGAGE2SQL.From = "[DBSoft].[dbo].[DateAff]";
                L_LANGAGE2SQL.Where = wheretmp;
                L_LANGAGE2SQL.OrderBy = "";
                L_LANGAGE2SQL.GroupBy = "";
                L_LANGAGE2SQL.IntoDbf = "T_POIN";
                L_LANGAGE2SQL.Execute();

                DataSet dataset1 = new DataSet();
                dataset1 = (L_LANGAGE2SQL.RecupDataSet(L_LANGAGE2SQL.command));

                

                dataGridView1.DataSource = dataset1;
                dataGridView1.DataMember = "Table";
                dataGridView1.Columns["PKDateAff"].ReadOnly = true;


                L_LANGAGE2SQL.DisConnect();
                Label_test.Text = "SELECTFAIT";
            }
            else
            {
                
                L_LANGAGE2SQL.RAZ();
                L_LANGAGE2SQL.Connect();
                L_LANGAGE2SQL.CSecteur = "";
                L_LANGAGE2SQL.EtatVal = 3;
                L_LANGAGE2SQL.Type = "SELECT";
                L_LANGAGE2SQL.Select = "*";
                L_LANGAGE2SQL.From = "[DBSoft].[dbo].[DateAff]";
                L_LANGAGE2SQL.Where = "";
                L_LANGAGE2SQL.OrderBy = "";
                L_LANGAGE2SQL.GroupBy = "";
                L_LANGAGE2SQL.IntoDbf = "T_POIN";
                L_LANGAGE2SQL.Execute();

                DataSet dataset1 = new DataSet();
                dataset1 = (L_LANGAGE2SQL.RecupDataSet(L_LANGAGE2SQL.command));



                dataGridView1.DataSource = dataset1;
                dataGridView1.DataMember = "Table";
                dataGridView1.Columns["PKDateAff"].ReadOnly = true;
                
                L_LANGAGE2SQL.DisConnect();
            }
            
        }
Messages postés
23
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
21 avril 2011

petite info supplémentaire :
public DataSet RecupDataSet(SqlCommand command)
        {
            SqlDataAdapter adapter = new SqlDataAdapter();
            command.CommandType = CommandType.Text;
            // Set the SqlDataAdapter's SelectCommand.
            adapter.SelectCommand = command;
            // Fill the DataSet.
            DataSet DataSetmp = new DataSet();
            adapter.Fill(DataSetmp,"Table"); <=== l'erreur indique qu'une exeption n'est pas gérée ici
            return DataSetmp;
        }
Messages postés
23
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
21 avril 2011

J'ai déja exploré pas mal de pistes,

- probleme de variables public/etc ? - non il récupère bien la valeur, créé bien le paramètre et l'ajoute bien a comment.parameter ...

-j'ai modifié Recupdataset pour qu'il ne prenne plus de paramètre avec la commande en variable globale ca sert a rien pour contrer un éventuel conflit de commande ? non toujours pareil. de plus une requete sans paramètre s'affiche parfaitement bien sur le datagrid.

- A savoir aussi je remplit mon dataset dans Fenetre.cs comme cela :

DataSet dataset1 = new DataSet();
dataset1 = (L_LANGAGE2SQL.Dataset);

dataGridView1.DataSource = dataset1;

sans paramètre pareil ca marche ...

Mais des que je met un paramètre pof : varaible scalaire @*** non déclarée..
J'avais déja eu cette erreur avant mais la je ne voie pas comment je peux résoudre ce bug :(
J'ai essayé de mettre les variables dans fenetre.Designer.cs mais même souci.. Essayé aussi de revenir en mettant les variables dans program.cs attaptant les fields mais pareil :(

program.cs est comme cela :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
   
    static class Program
    {

        

        /// <summary>
       
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Fenetre());
        }
    }
}


c'est uniquement le code généré en début de projet

si tu as une idée .. merci d'avance !
Messages postés
23
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
21 avril 2011

En fait j'ai testé sans le mode graphique de faire un select avec des paramètres, c'est le dataset qui n'aime pas le passage de paramètres apparemment ... je continue a faire des recherches sur les SqlParameters et les dataset / datatable !

Je viens de t'envoyer tout ça, merci a toi !!
Messages postés
23
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
21 avril 2011

huhu et je me tripatouille toute une journée pour une petite ligne grrrr ^^

En grand merci a toi pour toute l'aide ! :)

bonne continuation :D