IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#]Erreur pour remplir mon dataset


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut [C#]Erreur pour remplir mon dataset
    Bonjour,
    Voilà je suis bien embétée car c'est la premiere fois que j'ai cette erreur et je ne comprend pas pourquoi.


    J'ai
    *sqlConnection
    *sqlDataAdapter1 ,2 ,3 ,4
    *sqlCommand
    *Dataset

    J'ai bien initialisé ma chaine de connexion et des que je lance mon application il y a une fleche verte qui s'arrete sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sqlDataAdapter1.Fill(bDsite1,"Formation");
    avec le message d'erreur suivant:
    Une exception non gérée du type 'System.Data.SqlClient.SqlException' s'est produite dans system.data.dll

    Informations supplémentaires : Erreur système.
    C'est pas la premiere fois que j'utilise des pages en relation avec une base de donnée mais la je ne sais vraiment pas d'ou peut venir l'erreur, alors AIDEZ MOI SVP

  2. #2
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    C'est une erreur d'appel systeme. Comme tu ne nous as pas donne ton code ca risque d'etre dur de voir ou se situe le probleme!
    Je te conseille fortement de te servir du debuggeur et de suivre pas a pas ce qu'il se passe dans ton programme. Tu as peut etre un dataset Null ou un truc du genre, verifie a chaque nouvelle ligne les valeurs de tes variables.
    Bon courage

  3. #3
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    En fait c'est pas la peine que je montre plus de code puisque des que la page se charge il y a cet erreur.

    En fait je rempli mon dataset dans le constructeur de ma windows form car a part là je ne sais où il faut mettre ce code. Et dès que j'execute mon programme il y a l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public Form1()
    		{
    			//
    			// Requis pour la prise en charge du Concepteur Windows Forms
    			//
    			InitializeComponent();
    			//
    			// TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
    			//
    			sqlDataAdapter1.Fill(bDsite1,"Formation");
    			sqlDataAdapter2.Fill(bDsite1,"Logo");
    			sqlDataAdapter3.Fill(bDsite1,"News");
    			sqlDataAdapter4.Fill(bDsite1,"DetailFormation");
     
    		}

  4. #4
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    As tu utilise le debuggeur comme je te l'ai conseille ? As tu regarde ce que vaut sqlDataAdapter1234 ?

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    T'aurais pas oublié la command et la connection?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SqlConnection connec = new SqlConnection( "provider=...."
    				SqlCommand cmd = new SqlCommand( requete , connec);
    				SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter( cmd );
    				DataSet bDsite1 = new DataSet();
     
     
    				// récupération des données de la table
    				sqlDataAdapter1.Fill(bDsite1,"Formation");
    [edit] après relecture je retire cque j'ai dit, avec la déclaration des variables j'aurais ptet compris tout de suite ^^

    Sinon vérifie ta requête, le nom de ta table etc. ca doit venir de là

  6. #6
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    oui j'ai utiliser le deboggeur mais j'ai peut etre une idée sur l'origine de l'erreur je pense que comme dans mon dataset j'ai plusieurs table il y a peut etre une ligne de code a ajouter pour les identifier.

    Car j'ai regardé au niveau de la valeur du defaultSourceTableName est elle vaut Table peut etre il faut que je specifie clairement que c'est plus table mais formation?

    Ou bien il faut utiliser tablemappings? je ne sais pas.

  7. #7
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    non c'est pas un probleme ca. Pour les referencer tu peux aussi utiliser leur Index...
    Tu as verifier par rapport a ce qu'a dit Folkensan ?

  8. #8
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    oui j'ai verifié tout ce que vous avez dit!!!
    C'est bien pour ça que je ne comprend pas d'où peut venir cette erreur

    car il n'y a rien de plus simple le deboggeur passe en premier dans le constructeur qui initalise les variables qui sont généré automatiquement a l'aide du concepteur de visual studio et en suite il retourne au constructeur et execute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     sqlDataAdapter1.Fill(bDsite1,"Formation");
    J'ai essayé sans mettre le nom de la table c'est la meme chose
    En fait la premiere ligne de code que j'ecris par moi meme il y a une erreur !!!! c'est bizarre quand meme

    J'ajoute de plus que le dataset a été généré directement avec les dataAdpater donc j'ai rien ajouté par moi meme!!

  9. #9
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Points : 1 022
    Points
    1 022
    Par défaut
    N'utilises pas le designer, et initialise tes variables (command, connections...) directement dans le code. Tiens nous au courant

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Ca serait vraiment utile que tu nous montre ta portion de code avec toutes les lignes qu'il faut avant l'appel de ton Fill. Tes initialisations, tes variables , etc...

  11. #11
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    bon si je reprend depuis le debut voilà l'initialisation des parametres dont j'ai besoin :
    pour la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private System.Data.SqlClient.SqlConnection sqlConnection1;
    this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
    this.sqlConnection1.ConnectionString = "workstation id=nomSession;packet size=4096;user id=***;data source=nomSession;persist secu" +
    				"rity info=False;initial catalog=nomBD;password=****";
    pour sqlDataAdapter1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
    this.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
    this.sqlDataAdapter1.InsertCommand = this.sqlCommand1;
    			this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
    			this.sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
    																									  new System.Data.Common.DataTableMapping("Table", "Formation", new System.Data.Common.DataColumnMapping[] {
    																																																				   new System.Data.Common.DataColumnMapping("LibType", "LibType"),
    																																																				   new System.Data.Common.DataColumnMapping("Nom", "Nom"),
    																																																				   new System.Data.Common.DataColumnMapping("IDFormation", "IDFormation"),
    																																																				   new System.Data.Common.DataColumnMapping("IDType", "IDType"),
    																																																				   new System.Data.Common.DataColumnMapping("Titre1", "Titre1"),
    																																																				   new System.Data.Common.DataColumnMapping("Titre2", "Titre2"),
    																																																				   new System.Data.Common.DataColumnMapping("Titre3", "Titre3"),
    																																																				   new System.Data.Common.DataColumnMapping("Contenu1", "Contenu1"),
    																																																				   new System.Data.Common.DataColumnMapping("Contenu2", "Contenu2"),
    																																																				   new System.Data.Common.DataColumnMapping("Contenu3", "Contenu3"),
    																																																				   new System.Data.Common.DataColumnMapping("Duree", "Duree")})});
    			this.sqlDataAdapter1.UpdateCommand = this.sqlCommand3;
    et pour mon instruction sql select:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.sqlSelectCommand1.CommandText = @"SELECT TypeFormation.LibType, Formation.Nom, Formation.IDFormation, Formation.IDType, Formation.Titre1, Formation.Titre2, Formation.Titre3, Formation.Contenu1, Formation.Contenu2, Formation.Contenu3, Formation.Duree FROM Formation INNER JOIN TypeFormation ON Formation.IDType = TypeFormation.IDType";
    			this.sqlSelectCommand1.Connection = this.sqlConnection1;
    et dans mon constructeur de la windows form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	public Form1()
    		{
    			//
    			// Requis pour la prise en charge du Concepteur Windows Forms
    			//
    			InitializeComponent();
    			//
    			// TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
    			//
     
    			sqlDataAdapter1.Fill(bDsite1,"Formation");
     
     
    		}
    [/code]

  12. #12
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    juste une petite chose a verifier si tu utilises des relations tables.

    verfie l'ordre dans laquelle tu remplis tes donnees, je m'explique:

    si sqldataadpter rempli table 1 et sql dataadper rempli table 2 sachane que tu as une relation tb2 tb1 one to many par example c'est a dire que une ligne de tb2 ne peut pas exsiter si tb1 n'existe pas d'abord alors il te faut imperativement l'ordre:

    sqldatapter1 pui sqldataadpter2.

    j'espere avoir ete clair.

  13. #13
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    [quote="liliprog"]bon si je reprend depuis le debut voilà l'initialisation des parametres dont j'ai besoin :
    pour la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private System.Data.SqlClient.SqlConnection sqlConnection1;
    this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
    this.sqlConnection1.ConnectionString = "workstation id=nomSession;packet size=4096;user id=***;data source=nomSession;persist secu" +
    				"rity info=False;initial catalog=nomBD;password=****";
    C'est fait exprès tes variables dans la connectionString? Ca serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.sqlConnection1.ConnectionString = "workstation id=" + nomSession + ";packet size=4096;user id=" + idUser + ";data source=" + nomSession + ";persist security info=False;initial catalog=" + nomBD + ";password=" + passWord + ";"

  14. #14
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Pour la chaine de connexion il n'y a pas de probleme de ce coté là j'en suis sur.

    Pour ce qui est des relations entre mes tables, il y en a dans ma base de donnée mais je ne les ai pas fait apparaitre dans mon dataset. Je crois pas que ça soir primordial...
    Dans mon dataset en fait mes 4 tables sont distinctes et indépendante donc je ne pense pas que le probleme vienne de là mais ça aurait pu.

  15. #15
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Es-tu sûre que ta chaine de connection est correcte?
    Je pense que pour résoudre ton problème il faut faire une procédure pas à pas. En premier tu testes la connection, ensuite ton remplissage du dataSet avec une seul table, ensuite tes mappings.
    Comme ça tu verras déjà à quel moment, l'exception est lancée.

    Voilà, essaye déjà un accès simple à ta base de données, sans tenter des conversions implicites ou des choses du genre,

    tu fais une connection avec la connectionString écrite en dure.
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string serveur = nomServeur;
    string database = nomDB;
    string ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=" + this.database + ";server=" + this.serveur;
     
    this.sqlConnection1 = new System.Data.SqlClient.SqlConnection(ConnectionString ); 
     
    .....

    [Edit] Fait déjà un try pour voir les détails de ton erreur
    {
    }
    catch( Exception ex )
    {
    System.Forms.MessageBox.Show( ex.ToString() );
    }

  16. #16
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Je confirme ma chaine de connexion n'est pas le probleme.

    Je suis en train de me demander si le fait de mettre dans un meme dataset plusieurs tables qui ne sont pas en relation entre elles pose un probleme pour remplir justement ce dataset?

    Car j'ai fait un test avec une table uniquement tout fonctionne à merveille et des que je rajoute une table complétement indépendante et bien j'ai cette fameuse erreur qui revient.

    NB: sachant que dans une windows form apelé "essai" je rempli une table de mon dataset et que dans une autre windows form "autre" je rempli l'autre table de mon dataset.

    Merci pour votre aide

  17. #17
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Le problème Messieurs Dames, c'est que vous naviguer à vue
    Tout code de connection doit necessairement être dans un bloc try catch
    ensuite mettre un point d'arrêt à l'entrée du bloc, puis debuggage pas à pas pour voir la ligne qui fait entrer dans le catch
    puis lire le message complet dans ex.Message
    @+ pour des choses plus precises
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Impossible de remplir mon dataset
    Par kinder540 dans le forum C#
    Réponses: 32
    Dernier message: 15/07/2013, 09h48
  2. Problème pour remplir mon datagridview
    Par jacko842 dans le forum VB.NET
    Réponses: 4
    Dernier message: 25/03/2010, 17h14
  3. Procédure pour remplir un dataset
    Par CUCARACHA dans le forum PL/SQL
    Réponses: 1
    Dernier message: 07/10/2008, 13h15
  4. Problème pour remplir mon gridview
    Par getz85 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 11/02/2008, 13h28
  5. Réponses: 6
    Dernier message: 12/04/2007, 20h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo