Appeler une requete parametrée depuis le code

Résolu
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014 - 30 août 2008 à 17:35
cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 15 sept. 2008 à 12:07
Salut à tous!
j'ai une question!
je me développe une petite appli et en fait ce que je voudrais faire, c'est ne pas avoir de requete SQL dans mon code et dans ma DAL appeler directement des requetes paramétrées qui sont dans une base access.

Quelqu'un aurait il un bon tuto pour que je puisse voir comment appeler ma requete et surtout le parametre.
J'imagine qu'il faut insérer le paramètre avec la commande addparam .... mais j'aimerais un exemple dtaillé si possible!

Merci bien

Niko14

11 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
1 sept. 2008 à 16:27
regarde mon source http://www.csharpfr.com/code.aspx?ID=27738
ca pourra peut etre t'aider

<hr />Arthenius
"Ce qui ne me tue pas, me rend plus fort..."
3
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
31 août 2008 à 11:41
Hello,

Avec la fonction recherche du site, tu aurais peut-être trouvé ces deux tuto :

http://www.csharpfr.com/tutoriaux/COMMENT-FAIRE-REQUETE-PARAMETREE-DANS-BASE-DONNEE_710.aspx
http://www.csharpfr.com/tutoriaux/UTILISATION-REQUETES-PARAMETREES-AVEC-ADO-NET_709.aspx

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
31 août 2008 à 12:00
Salut!
j'ai deja jeté un oeil sur ces tutoriels, mais c'est pas exactement ce que je veux faire!
En fait je ne veux pas qu'il y ait de code SQL dans mes pages je voudrais utiliser les commandes commandtype.storedProcedure .... mais le probleme c'est que ej n'ai pas toute la méthode pour faire la connection a la base, comment passer les parametres comme je les ai appelé dans ma requete access.....

j'espere avoir bien réussi à m'exprimer :)

merci de votre aide

Niko14
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
31 août 2008 à 21:49
Si framework 3.5, regarder du côté de linq2SQL, ça facilite pas mal les choses... Sinon, recherches sur le site, y'a beaucoup de sources et messages sur le forum concernant ce que tu cherches à faire avec la méthode "old school"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
31 août 2008 à 22:47
oui maintenant j'utilise le framework 3.5, mais juste depuis tres peu de temps et je dois avouer que link2sql je ne connais que de nom, si vous avez des tutos je suis tres preneur!

C'est vrai que ce que je veux faire c'est "old school" mais je trouve que ca fonctionne bien!

Je vais jeter un oeil sur lin2SQL on va voir ce que ca donne!

Mais si toutefois vous avez toujours des réponses n'hésitez pas...

Niko14
0
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
1 sept. 2008 à 17:06
Merci bien,
au 1er coup d'oeil ca a l'air plutot interessant, etant dans l'impossibilité de tester ca tout de suite, je vais voir ca ce soir chez moi au calme et je te tiens au courant!

Merci bien.

Niko14
0
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
7 sept. 2008 à 21:23
Salut!
Merci pour la source c'est nickel ca marche plutot pas mal!
Par contre j'ai un soucis!
je bosse donc sur une base Access qui a été copié dans le dossier bin/debug de mon projet!

j'ai mes requetes dans cette base mais quand je lance mon programme ca supprime mes requetes!
Il me les a affiché une fois, j'ai recommencé, mais ca m'a dit que ca n'avait pas trouvé la requete que j'avais passé en parametre, et en regardant dans ma base, ben en fait elles n'etaient plus dans la partie requete!!

Quelqu'un sait il d'ou ca pourrait venir?
ca vient pas du fait que je bosse sur mon code en ayant la base ouverte?

Merci

Niko14
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
8 sept. 2008 à 08:51
un bout de code peut etre ??
pas de raison que tes sp disparraisse comme ca...

c'est bizarre

<hr />Arthenius
"Ce qui ne me tue pas, me rend plus fort..."
0
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
8 sept. 2008 à 09:40
Salut,
je vais mettre un bout de code ce soir car la je suis au boulot et je n'ai pas mon code avec moi!
En fait j'ai retesté hier pendant longtemps et des que je mets l'appli en fonctionnement pour la tester mes requetes s'effacent et ma base passent de 356Ko a 176 Ko!

Je me connecte a l'aide de procStock, faites a l'aide d'un tuto d'ici, mais je ne vois pas du tout d'ou ca peut venir!

Niko14
0
cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014
8 sept. 2008 à 21:12
Comme dit ce matin voici le code que j'ai sur ma page!
y en a un paquet et évitez les remarques sur la propreté du code car ce sont des tests avant de partir sur la "vraie " application

Si quelqu'un voit pourquoi a chaque démarrage de l'appli ou presque ca me supprime mes requetes de la base.... attention le code:

 private void Form1_Load(object sender, EventArgs e)
        {
            ////Connection à la base de données
            //OleDbConnection MaConnect = new System.Data.OleDb.OleDbConnection();
            //string ConnectionString;
            ////DataAdapter
            //OleDbDataAdapter MonDataAdapter;
            //OleDbCommand CmdSelect;
            //DataSet ds = new DataSet();
            //ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath.ToString() + "\\essai1.mdb";

            //Connection à la base de données
            OleDbConnection MaConnect = new System.Data.OleDb.OleDbConnection();
            //DataAdapter
            OleDbDataAdapter MonDataAdapter2;
            //Objet de command
            OleDbCommand CmdSelect2;//, CmdInsert, CmdUpdate, CmdDelete;
            //Le Dataset
            DataSet ds2 = new DataSet();
            string ConnectionString;
            ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath.ToString() + "\\essai1.mdb";
            MaConnect.ConnectionString = ConnectionString;

            CmdSelect2 = new OleDbCommand("gpeRq", MaConnect);
            CmdSelect2.CommandType = System.Data.CommandType.StoredProcedure;

            //on utilise le dataadapter pour remplir le dataset
            //on attribue la command au SelectCommand
            MonDataAdapter2 = new OleDbDataAdapter(CmdSelect2);

            //on vide le dataset
            ds2.Clear();

            //On rempli le dataset
            MonDataAdapter2.Fill(ds2);

           
           
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Connection à la base de données
             OleDbConnection MaConnect = new System.Data.OleDb.OleDbConnection();
             string ConnectionString;
             ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath.ToString() + "\\essai1.mdb";

            //DataAdapter
             OleDbDataAdapter MonDataAdapter2;
            //Objet de command
             OleDbCommand CmdSelect2;//, CmdInsert, CmdUpdate, CmdDelete;
            //Le Dataset

             DataSet ds2 = new DataSet();
             MaConnect.ConnectionString = ConnectionString;
            //Pour une procedure stockee nommée SP_SELECT_CATEGORIES (par exemple)
            CmdSelect2 = new OleDbCommand("membresRq", MaConnect);
            CmdSelect2.CommandType = System.Data.CommandType.StoredProcedure;

            //MonDataAdapter2.SelectCommand.Parameters.Add("@id_groupe", OleDbType.Integer).Value = int.Parse(comboBox1.SelectedItem.ToString());

            //on crée le parametre
            OleDbParameter param = new OleDbParameter("@id_groupe", OleDbType.Integer);
            param.Value = 1; //int.Parse(comboBox1.SelectedItem.ToString());

            CmdSelect2.Parameters.Add(param);

            //on utilise le dataadapter pour remplir le dataset
            //on attribue la command au SelectCommand
            MonDataAdapter2 = new OleDbDataAdapter(CmdSelect2);

            //on vide le dataset
            ds2.Clear();

            //On rempli le dataset
            MonDataAdapter2.Fill(ds2);
            //CM = (CurrencyManager)BindingContext[ds.Tables["Liste_Categorie"]];
            ////on affecte le datasource du datagrid afin de visualiser les données
            //dataGridView1.DataSource = ds.Tables[0];
            dataGridView2.DataSource = ds2.Tables[0];
            //comboBox1.DataSource = ds.Tables[0];

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Connection à la base de données
            OleDbConnection MaConnect = new System.Data.OleDb.OleDbConnection();
            string ConnectionString;
            //DataAdapter
            OleDbDataAdapter MonDataAdapter;
            OleDbCommand CmdSelect;
            DataSet ds = new DataSet();
            ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath.ToString() + "\\essai1.mdb";

            MaConnect.ConnectionString = ConnectionString;
            //Ici on "attaque" le serveur localhost et la base de données northwind
            //MaConnect = new OleDbConnection(ConnectionString);
            //l'objet connection est crée

            try
            {
                //lbl_aide.Text = "On affiche le resultat d'un select simple";
                //Un simple select
                //CmdSelect = new SqlCommand("SELECT CategoryId, CategoryName, Description FROM CATEGORIES", MaConnect);
                //CmdSelect.CommandType = System.Data.CommandType.Text;

                //Pour une procedure stockee nommée SP_SELECT_CATEGORIES (par exemple)
                CmdSelect = new OleDbCommand("gpeRq", MaConnect);
                CmdSelect.CommandType = System.Data.CommandType.StoredProcedure;

                //on utilise le dataadapter pour remplir le dataset
                //on attribue la command au SelectCommand
                MonDataAdapter = new OleDbDataAdapter(CmdSelect);

                //on vide le dataset
                ds.Clear();

                //On rempli le dataset
                MonDataAdapter.Fill(ds);
                //CM = (CurrencyManager)BindingContext[ds.Tables["Liste_Categorie"]];
                ////on affecte le datasource du datagrid afin de visualiser les données
                //dataGridView1.DataSource = ds.Tables[0];
                DataTable dt = ds.Tables[0];

                comboBox1.DataSource = dt;
                comboBox1.ValueMember = "nom_groupe";
                comboBox1.DisplayMember = "id_goupe";
                //MaConnect.Close();
            }
            catch (Exception xcp)
            {
                MessageBox.Show(xcp.Message);
            }
        }

    }

merci beaucoup de votre aide!

Niko14
0
cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2008 à 12:07
Salut,

Une remarque quand même sur le code : Path.Combine is good :p

Sinon : "Si quelqu'un voit pourquoi a chaque démarrage de l'appli ou presque ca me supprime mes requetes de la base"
"a chaque démarrage de l'appli" : quand le code a été modifié et que tu lances depuis VS ?
"ou presque" : quand le code n'a pas été modifié ou que tu lances en dehors de VS ?

Je suppose que le fichier mdb fait partie du projet et qu'il est en copie automatique vers le répertoire de sortie, si c'est le cas la propriété "Copy to Output Directory" (en français je ne sais plus) devrait t'intéresser.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous