Bonjour j'ai un probleme au costructeur

Résolu
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013 - 30 mars 2012 à 12:58
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013 - 1 avril 2012 à 11:45


bonjour tous j ai un probleme au constructeur voici ma class


using System;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace WindowsFormsApplication1
{
    public class dataaecces
    {
        public SqlConnection Conn { get; set; }
        public DataTable dTable { get; set; }
        public SqlDataAdapter DataAdapter { get; set; }
        public SqlDataReader DataReader { get; set; }
        public SqlCommandBuilder CommandBuilder { get; set; }

        public dataaecces() { }

        public dataaecces()
        {
            try
            {
                this.Conn = new SqlConnection("server=.;database=Utilisateur;integrated security=true");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        

        public void GetData(string table)
        {
            this.Conn = new SqlConnection("server=.;database=Utilisateur;integrated security=true");
            this.DataAdapter = new SqlDataAdapter("select * from" + table, this.Conn);
            this.dTable = new DataTable();
            this.DataAdapter.Fill(this.dTable);
            this.CommandBuilder = new SqlCommandBuilder(this.dTable);
        }
    }
}

19 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
30 mars 2012 à 14:01
Bonjour.
Tu ne peux pas écrire deux contructeurs avec la même signature, sinon le compilateur ne saura pas lequel appeler quand tu instancies ta classe.

Deux solutions, la plus simple est de supprimer cette ligne
public class dataaecces() { }


La deuxième si tu as vraiment besoin d'un constructeur qui ne fait rien et d'un deuxième qui fait quelque chose, c'est de mettre un parrametre à l'un des deux, tu te mets un commentaire pour te souvenir de qui est qui.
Bon c'est pas très dans les normes comme solution:
        /// <summary>
        /// constructeur qui ne fait rien
        /// </summary>
        public dataaecces() { }

        /// <summary>
        /// constructeur qui fait quelque chose
        /// </summary>
        public dataaecces(bool travail)
        {
            ....
        }





Whismeril
3
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
30 mars 2012 à 14:34
Dejà as tu besoin quelque part dans ton code d'appeler le construicteur qui ne fait rien?

Whismeril
3
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
30 mars 2012 à 18:32
Arretes de valider toutes les réponses, ça ne sert à rien.
Il faut valider uniquement le message qui solutionne ton problème.

bon dans ta class, il y'a 2 constructeurs sans paramètre

        public dataaecces() { }//c'est de celui-la que je te parle

        public dataaecces()
        {
            try
            {
                this.Conn = new SqlConnection("server=.;database=Utilisateur;integrated security=true");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



celui que j'ai commenté te sert il?

Whismeril
3
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
30 mars 2012 à 19:18
oui, pardon monsieur si je vous dérangé , mai je suis debutant , j'ai un difficulté de comprendre la poo de c#
3

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

Posez votre question
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
30 mars 2012 à 12:59
[i]le message qui est relancée
/i

Error 1 Type 'WindowsFormsApplication1.dataaecces' already defines a member called 'dataaecces' with the same parameter types c:\documents and settings\admin\my documents\visual studio 2010\projects\WindowsFormsApplication2\WindowsFormsApplication2\dataaecces.cs 18 16 WindowsFormsApplication2
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
30 mars 2012 à 14:17
merci monsieur Whismeril c'est la deuxième class qui s'appelle utili, mai comment utiliser le boolean ? car ile ne initialisé pas la connexion


using System; 
using System.Text; 
using System.Data.SqlClient; 
using System.Data; 

namespace WindowsFormsApplication1 
{ 
class utili 
{
    private dataaecces _access = null;

    private dataaecces Access 
{ 
get {if(this._access == null)
{
    this._access = new dataaecces("utili");
this._access.GetData("utilisateur");
}
return this._access;
}}


public utili() { }

public int Id { get; set; }
public string Nom { get; set; }
public string mp { get; set; }


public utili(int id, string nom,string mpu) 
{ 
this.Id = id; 
this.Nom = nom; 
this.mp = mpu; 
}

  

#region //ajouter
public void AddToTable() 
{
    DataRow row = new DataRow();

row[0]= this.Id; 
row[1] = this.Nom; 
row[2] = this.mp; 

this.Access.Table.Rows.Add(row); }
#endregion


public void Validate() 
{ 
this.Access.DataAdapter.Update(this.Access.Table); 
} 
} 
} 
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
30 mars 2012 à 14:18
merci monsieur Whismeril c'est la deuxième class qui s'appelle utili, mai comment utiliser le boolean ? car ile ne initialisé pas la connexion




using System; 
using System.Text; 
using System.Data.SqlClient; 
using System.Data; 

namespace WindowsFormsApplication1 
{ 
class utili 
{
    private dataaecces _access = null;

    private dataaecces Access 
{ 
get {if(this._access == null)
{
    this._access = new dataaecces("utili");
this._access.GetData("utilisateur");
}
return this._access;
}}


public utili() { }

public int Id { get; set; }
public string Nom { get; set; }
public string mp { get; set; }


public utili(int id, string nom,string mpu) 
{ 
this.Id = id; 
this.Nom = nom; 
this.mp = mpu; 
}

  

#region //ajouter
public void AddToTable() 
{
    DataRow row = new DataRow();

row[0]= this.Id; 
row[1] = this.Nom; 
row[2] = this.mp; 

this.Access.Table.Rows.Add(row); }
#endregion


public void Validate() 
{ 
this.Access.DataAdapter.Update(this.Access.Table); 
} 
} 
} 
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
30 mars 2012 à 18:23
pardon monsieur, comme quoi ?
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
30 mars 2012 à 19:40
Non tu ne me déranges pas, mais si tu ne réponds pas à mes questions je ne peux pas t'aider.

Et arrêtes d'accepter plein de réponses, les messages encadrés de vert sont ceux qui te donne la solution à ton problème.

Je vois que tu as des difficultés avec le français, j'essaie de ne pas utiliser de mots compliqués.

Il faut que tu répondes à cette question est ce que le constructeur ci dessous te sers à quelque chose dans ton programme:
public dataaecces() { }
?



Whismeril
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
30 mars 2012 à 20:06
vous étés vrai, j'ai un difficulté de francais, actuellement j'essaie elever ma niveau des vocabulaires francai
j'avais pensé que a obligatoire je click afiche mon message au forum.
j'essaie visualiser bien mon code et je vais repond .
merci merci merci
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
30 mars 2012 à 20:53
Il faut que tu te demandes si tu as besoin de créer une instance de dataaccess sans ouvrir de connexion vers tes données, si oui le constructeur vide te sers, sinon tu n'en as pas besoin.


Whismeril
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
31 mars 2012 à 16:43
bonjour monsieur whismeril .
le premier constructeur : c'est un constructeur par default qui initialisé les attribues qu'on mettez aux méthode(getdata)
le deuxième constricteur : pour initialisé la connexion , par ce que en avance je ne besoin pas a instancie le connexion a chaque fois quand je commensrai a cree les method ( ajout ou consulter ) dans la deuxième class ,
merci d'avance
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
31 mars 2012 à 18:21
le but de projet est mise a jour d'un table( etudiant).
si je vous donne une autre d'informations pour m'aider , je suis pret
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
31 mars 2012 à 19:19
Bonsoir,

dons ce cas deux constructeurs peuvent être une solution.

Quand tu voudras créer une instance de dataacess sans connexion il faudra écrire ceci:

dataaccess monDataAccess = new dataaccess();//appel du constructeur vide


Quand tu voudras une instance avec la connexion par défaut il faudra écrire ceci:

dataaccess monDataAccess = new dataaccess(true);//appel du constructeur avec connexion



Whismeril
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
31 mars 2012 à 19:23
Maintenant passons à utili,

cette ligne
this._access = new dataaecces("utili");
appelle un constructeur avec une chaine de caractères (string) en paramètre. Or il n'y en a pas.

Si le mot "utili" doit te servir à quelque chose dans dataaccess, tu dois écrire un constructeur avec une string en paramètre.
Si le mot "utili" n'a pas d'utilité, alors appelle un des deux constructeurs existants.


Whismeril
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
1 avril 2012 à 01:38
oui, vous etes vrai mon mètre , une bon solutions et bien logique , je vais testerai votre proposition.
merci bcp Whismeril pour la conseille.
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
1 avril 2012 à 01:54
[^^happy10][^^happy10][^^happy10][^^happy10][^^happy10][^^happy10]
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
1 avril 2012 à 08:08
Content de t'avoir aidé, mais je ne suis pas un maître en C# et encore moins le tien.
Un peu moins débutant c'est tout. Pas plus tard qu'hier matin, j'ai écris une grosses bêtise dans une autre discussion.


Whismeril
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
1 avril 2012 à 11:45
Merci
0
Rejoignez-nous