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

C# Discussion :

[Base de données SQL server] Tableau 2D => datagrid


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Par défaut [Base de données SQL server] Tableau 2D => datagrid
    Bonjour,

    Je cherche à remplir un datagrid en extrayant les données contenues dans un tableau à deux dimensions...
    Malheureusement, après plusieurs recherches infructueuses, et un creusage de tête entrainant une migraine abominable, je ne sais toujours pas comment faire...

    Tout, ou pratiquement, a été essayé...

    En fait, je voudrais pouvoir insérer une ligne dans mon datagrid, en partant du principe que mon tableau 2D récupère toutes les informations du dataGrid, et les stock, pour les réafficher, et les enregistrer dans la base de donnée SQL Server. Vous m'suivez jusque là?

    Pour éclairer voici le code qui me permet de transferer les données du dataGrid dans mon tableau:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    L = dsMateriel1.MATERIELS.Rows.Count;
    			C = dsMateriel1.MATERIELS.Columns.Count;
     
    			string [,] tab = new string [L,C] ;
     
    			try
    			{
    				//Ouverture de la connexion:
    				Cnx2.Open();
    				Cmd2.Connection=Cnx2;
     
    				// Création de la requête SQL:
    				Cmd2.CommandText="SELECT * FROM MATERIELS;";
     
    				SqlDataReader reader = Cmd2.ExecuteReader();
     
    				k=0;
     
    				while ( reader.Read())
    				{
    					for (i=0; i<L; i++)
    					{
    						for (j=0; j<C; j++)
    						{
    							if (reader.IsDBNull(k))
    							{
    								tab[i,j] = Convert.ToString(reader.GetValue(k));
     
    							}
    							else
    							{
    								tab[i,j] = Convert.ToString(reader.GetValue(k));
     
    							}
    							k = k+1;
    						}
    						k = 0;
    					}
     
    				}
    				MessageBox.Show("Tableau rempli!");
     
    				//Fermeture de la connexion:
    				reader.Close();
    				Cnx2.Close();
    Et voici ce que je tente de faire dans le sens inverse:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    try
    			{
    				//Ouverture de la connexion:
    				Cnx2.Open();
    				Cmd2.Connection=Cnx2;
     
    				// Création de la requête SQL:
    				Cmd2.CommandText="SELECT * FROM MATERIELS;";
     
    				SqlDataReader reader = Cmd2.ExecuteReader();
     
     
     
    				k=0;
     
    					for (i=0; i<L; i++)
    					{
    						for (j=0; j<C; j++)
    						{
    							dsMateriel1.MATERIELS.Rows[j] = Convert.ChangeType(tab[i,j]);
    							dsMateriel1.MATERIELS.Columns[i] = Convert.ChangeType( tab[i,j]);
    						}
    						k = 0;
    					}
     
     
    				MessageBox.Show("Tableau copié!");
     
    				//Fermeture de la connexion:
    				reader.Close();
    				Cnx2.Close();
    			}
    Un grand merci à ceux qui pourront m'aider!
    Je suis ouvert à toute les suggestions possibles et imaginables!

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    des suggestions :

    faire de la POO avec un langage POO, on croirait du vb6 ton code

    et puis ne pas utiliser des tableaux mais des collections de classes

    tu auras je pense plus d'une requete à utiliser dans ton programme, donc encapsuler l'accès aux données pour avoir moins de ligne de code et donc moins de source de bug (plutot que de déclarer une connexion, un command et un datareader à chaque fois)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Si tu ne veux/peux pas utiliser d'objet, as-tu réellement besoin de on tableau 2d ?

    Tu peux retourner le résultat de ta requête dans une DataTable, lui-même contenu dans un DataSet (l'idéal dans ce cas est de créer des DataTables fortement typées ! et de mapper les champs sur ceux du retour de la requête).
    Ensuite, si je me souviens bien, les DataSets offrent des services de mise à jour de la db (mode connecté).
    Enfin, tu indiques à ta grille que sa source de données est telle DataTable et ça roule !

    Mais je rejoindrais Pol63 sur le fait d'utiliser plutôt des objets, dans un langage Orienté Objet, c'est normal

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Par défaut
    Merci pour vos réponses!

    Il s'avère que j'ai changé complètement de tactique, en préférant utiliser le SqlDataAdapter.InsertCommand, UpdateCommand, etc ...

    Beaucoup plus simple d'utilisation, j'me suis cassé la tête à rien je crois, et merci à vous qui m'avez dirigé sur cette voie, bien moins chiante!

    ciao à tous!!!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/05/2012, 19h30
  2. [C#] Lister les Bases de données (SQL SERVER) d'un poste
    Par justice007 dans le forum Accès aux données
    Réponses: 9
    Dernier message: 21/06/2010, 16h10
  3. Réponses: 3
    Dernier message: 01/09/2005, 16h24
  4. probleme base de donnée SQL server
    Par waguila666 dans le forum ASP
    Réponses: 9
    Dernier message: 01/12/2004, 11h54
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

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