none
SQLCE lister table et contenur dans treeview RRS feed

  • Question

  • Bonjour a tous

    J'utilise ceci pour un read dans ma base de données

    using (SqlCeConnection cn = new SqlCeConnection(mClass.ConnectString()))
                {
                    if (cn.State != ConnectionState.Open)
                    { cn.Open(); }
    
                    var sqlT = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";
                    var sqlS = "";
    
                    using (var cmd = new SqlCeCommand(sqlT,cn))
                    {
                        cmd.CommandType = CommandType.Text;
                        using (var tdr = cmd.ExecuteReader())
                        {
                            while (tdr.Read())
                            {
                                TreeNode t = new TreeNode(tdr.GetString(0));
                                node.Nodes.Add(t); 
                            }
                        }
                    } 
    
                    using (var cmd = new SqlCeCommand(sqlS, cn))
                    {
                        cmd.CommandType = CommandType.Text;
                        using (var rdr = cmd.ExecuteReader())
                        {
                            while (rdr.Read())
                            {
                                TreeNode s = new TreeNode(rdr["rvtime"].ToString());
                                node.Nodes[0].Nodes.Add(s);                             
                            }
                        }
                    }
                }

    mon probleme est en gras dans le code.

    je trouve pas la commande text pour recuperer un contenu specific des tables lister

    Si vous pouviez m'aider

    MERCI:


    Daniel


    mardi 22 juillet 2014 20:34

Réponses

  • Bonjour Aurel ou Bonsoir

    Merci encore une fois pour cette aide précieuse

    Maintenant ca fonctionne bien il me reste a finir mon petit projet et de voir ou cela va me conduire

    Merci Beaucoup A plus

    Code Résolus:

     private void LoadNodes()
            {
                treeView1.Nodes.Clear();
                TreeNode RootNode = new TreeNode("To Do");
                treeView1.Nodes.Add(RootNode);
                PopulateTree(RootNode);
                RootNode.ImageIndex = 1;
                treeView1.SelectedNode = null;
                treeView1.Refresh();
                treeView1.TopNode.ExpandAll();
            }
    
            private void PopulateTree(TreeNode node)
            {
                using (SqlCeConnection cn = new SqlCeConnection(mClass.ConnectString()))
                {
                    if (cn.State != ConnectionState.Open)
                    { cn.Open(); }
    
                    var sqlT = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";
                    using (var cmd = new SqlCeCommand(sqlT, cn))
                    {
                        cmd.CommandType = CommandType.Text;
                        using (var tdr = cmd.ExecuteReader())
                        {
                            while (tdr.Read())
                            {
                                TreeNode t = new TreeNode(tdr.GetString(0));
                                node.Nodes.Add(t);
                            }
                            tdr.Close();    
                        }
                    }
    
                    foreach (TreeNode x in node.Nodes)
                    { 
                        var sqlS = "select * from [" + x.Text + "]"; 
                        try
                        { 
                            using (var cmd = new SqlCeCommand(sqlS, cn))
                            {
                                cmd.CommandType = CommandType.Text;
    
                                using (var rdr = cmd.ExecuteReader())
                                {
                                    while (rdr.Read())
                                    {
                                        TreeNode s = new TreeNode(rdr["rvtime"].ToString());
                                        x.Nodes.Add(s); 
                                    }
                                    rdr.Close();
                                }                            
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }
            }


    Daniel

    • Marqué comme réponse DanielMorais jeudi 31 juillet 2014 20:00
    jeudi 31 juillet 2014 19:59

Toutes les réponses

  • Bonjour

    A priori votre requête est correcte.
    http://social.msdn.microsoft.com/Forums/sqlserver/en-US/0ee65c7f-2066-4acb-800c-81ebef2edbcf/how-to-list-all-tables-existing-in-sql-compact-35-database-and-their-column-total?forum=sqlce
    Quel erreur obtenez-vous?

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 24 juillet 2014 08:07
  • Bonjours Aurel

    Merci pour votre reponse

    J'ai du oublier de dire que c'est la deuxieme ligne du code le probleme je trouve pas la bonne commande

    SQLS="";

    pour recuperer le contenu de la colonne rvtime des tables recuperer par la ligne

    var sqlT = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";

    Merci


    Daniel

    vendredi 25 juillet 2014 19:17
  • rvtime est une colonne dabs une table ou dans chaque table?
    Essayez de donner un exemple avec ce que vous avez dans une table et ce que vous voulez afficher.

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 28 juillet 2014 06:15
  • Bonjour voici la table est créer de cette facon

    static public void CreateTodo(String StrDate)
        {        
            SqlCeConnection cn = new SqlCeConnection(ConnectString());
            if (cn.State == ConnectionState.Closed)
            {
                cn.Open();
            }
            SqlCeCommand cmd;
            sql = "create table [" + StrDate + "] (rvid INT IDENTITY (1,1) PRIMARY KEY not null, "
                + "rvtime nvarchar(50), "
                + "rvadress nvarchar(256), "
                + "rvcname nvarchar(50), "
                + "rvtel nvarchar(25), "            
                + "rvtelext nvarchar(10))";
            cmd = new SqlCeCommand(sql, cn);
            cmd.ExecuteNonQuery();
            cn.Close();
            TName = StrDate;
        }

    Les tables sont les date  donc il me faut récupérer les dates et ensuite les heures d'où rvtime qui est dans chaque table

    D'où le code suivant la ou est mon probleme

    private void PopulateTree(TreeNode node)
            {
                //var tc = "";
                using (SqlCeConnection cn = new SqlCeConnection(mClass.ConnectString()))
                {
                    if (cn.State != ConnectionState.Open)
                    { cn.Open(); }
    
                    var sqlT = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";
                    using (var cmd = new SqlCeCommand(sqlT, cn))
                    {
                        cmd.CommandType = CommandType.Text;
                        using (var tdr = cmd.ExecuteReader())
                        {
                            while (tdr.Read())
                            {
                                TreeNode t = new TreeNode(tdr.GetString(0));
                                node.Nodes.Add(t);
                                //tc =  tdr.GetString(0);
                            }
                        }
                    }
    
                    var sqlS = "";
                    using (var cmd = new SqlCeCommand(sqlS, cn))
                    {
                        cmd.CommandType = CommandType.Text;
                        using (var rdr = cmd.ExecuteReader())
                        {
                            while (rdr.Read())
                            {
                                TreeNode s = new TreeNode(rdr.GetString(0));
                                node.Nodes[0].Nodes.Add(s);                             
                            }
                        }
                    }
                }
            }

    Merci


    Daniel


    lundi 28 juillet 2014 17:31
  • Si j'ai bien compris, vous devez exécuter la deuxième requête pour chaque table. C'est vrai?
    Dans ce cas je vous propose ce code (du mémoire) :

    foreach (TreeNode x in node.Nodes){
    
       var sqlS = "select * from " + x.Text ;
    
       try
       {
    
           using (var cmd = new SqlCeCommand(sqlS, cn))
           {
               cmd.CommandType = CommandType.Text;
               using (var rdr = cmd.ExecuteReader())
               {
                   while (rdr.Read())
                   {
                       TreeNode s = new TreeNode(rdr.GetString(0));
                       node.Nodes[0].Nodes.Add(s);
                   }
               }
           }
    
       }
       catch (Exception ex)
       {
           Console.WriteLine(ex.Message);
       }
    }


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 29 juillet 2014 07:08
  • Bonjour Aurel Merci pour ce snippet

    Mais je recoit l'erreur suivante

    Une exception non gérée du type 'System.Data.SqlServerCe.SqlCeException' s'est produite dans System.Data.SqlServerCe.dll

    J'ai placer le code comme indique mail il semble que le reader ne le prend pas

    reader sort null

    MERCI


    Daniel


    mardi 29 juillet 2014 14:16
  • Pouvez-vous partager avec nous le message complet que vous pouvez trouver dans la console (ex.Message) ?
    Essayez de fermer l’ancien DataReader avec 

           using (SqlCeConnection cn = new SqlCeConnection(mClass.ConnectString()))
               
    {
                   
    if (cn.State != ConnectionState.Open)
                   
    { cn.Open(); } var sqlT = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";
                   
    using (var cmd = new SqlCeCommand(sqlT, cn))
                   
    {
                        cmd
    .CommandType = CommandType.Text;
                       
    using (var tdr = cmd.ExecuteReader())
                       
    {
                           
    while (tdr.Read())
                           
    {
                               
    TreeNode t = new TreeNode(tdr.GetString(0));
                                node
    .Nodes.Add(t);
                               
    //tc =  tdr.GetString(0);
                           
    }

                         tdr.Close () ;                    
                         }
                   
    }
    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mercredi 30 juillet 2014 07:57
  • Bonjour

     private void LoadNodes()
            {
                treeView1.Nodes.Clear();
                TreeNode RootNode = new TreeNode("To Do");
                treeView1.Nodes.Add(RootNode);
                PopulateTree(RootNode);
                RootNode.ImageIndex = 1;
                treeView1.SelectedNode = null;
                treeView1.Refresh();
                treeView1.TopNode.ExpandAll();
            }
    
            private void PopulateTree(TreeNode node)
            {
                using (SqlCeConnection cn = new SqlCeConnection(mClass.ConnectString()))
                {
                    if (cn.State != ConnectionState.Open)
                    { cn.Open(); }
    
                    var sqlT = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";
                    using (var cmd = new SqlCeCommand(sqlT, cn))
                    {
                        cmd.CommandType = CommandType.Text;
                        using (var tdr = cmd.ExecuteReader())
                        {
                            while (tdr.Read())
                            {
                                TreeNode t = new TreeNode(tdr.GetString(0));
                                node.Nodes.Add(t);
                            }
                            tdr.Close();    
                        }
                    }
    
                    foreach (TreeNode x in node.Nodes)
                    { 
                        var sqlS = "select * from [" + x.Text + "]"; 
                        try
                        { 
                            using (var cmd = new SqlCeCommand(sqlS, cn))
                            {
                                cmd.CommandType = CommandType.Text;
    
                                using (var rdr = cmd.ExecuteReader())
                                {
                                    while (rdr.Read())
                                    {
                                        TreeNode s = new TreeNode(rdr["rvtime"].ToString());
                                        node.Nodes[0].Nodes.Add(s);
                                    }
                                    rdr.Close();
                                }                            
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.show(ex.Message);
                        }
                    }
                }
            }

    J'ai essayer de fermer les le reader oui j'ai maintenant la lecture des heures dans la date  

    l'autre probleme causé ici est que les heures de L'autre table apparaissent dans la premiere table et rien dans l'autre.

    7:00 est sensée être dans la l'autre table 

    Comment je peut regler se problème

    Merci


    Daniel

    mercredi 30 juillet 2014 16:43
  • J'ai fait un petite erreur, désolé :

    remplacez -   node.Nodes[0].Nodes.Add(s);

    avec x.Nodes.Add(s);

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    jeudi 31 juillet 2014 06:14
  • Bonjour Aurel ou Bonsoir

    Merci encore une fois pour cette aide précieuse

    Maintenant ca fonctionne bien il me reste a finir mon petit projet et de voir ou cela va me conduire

    Merci Beaucoup A plus

    Code Résolus:

     private void LoadNodes()
            {
                treeView1.Nodes.Clear();
                TreeNode RootNode = new TreeNode("To Do");
                treeView1.Nodes.Add(RootNode);
                PopulateTree(RootNode);
                RootNode.ImageIndex = 1;
                treeView1.SelectedNode = null;
                treeView1.Refresh();
                treeView1.TopNode.ExpandAll();
            }
    
            private void PopulateTree(TreeNode node)
            {
                using (SqlCeConnection cn = new SqlCeConnection(mClass.ConnectString()))
                {
                    if (cn.State != ConnectionState.Open)
                    { cn.Open(); }
    
                    var sqlT = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";
                    using (var cmd = new SqlCeCommand(sqlT, cn))
                    {
                        cmd.CommandType = CommandType.Text;
                        using (var tdr = cmd.ExecuteReader())
                        {
                            while (tdr.Read())
                            {
                                TreeNode t = new TreeNode(tdr.GetString(0));
                                node.Nodes.Add(t);
                            }
                            tdr.Close();    
                        }
                    }
    
                    foreach (TreeNode x in node.Nodes)
                    { 
                        var sqlS = "select * from [" + x.Text + "]"; 
                        try
                        { 
                            using (var cmd = new SqlCeCommand(sqlS, cn))
                            {
                                cmd.CommandType = CommandType.Text;
    
                                using (var rdr = cmd.ExecuteReader())
                                {
                                    while (rdr.Read())
                                    {
                                        TreeNode s = new TreeNode(rdr["rvtime"].ToString());
                                        x.Nodes.Add(s); 
                                    }
                                    rdr.Close();
                                }                            
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }
            }


    Daniel

    • Marqué comme réponse DanielMorais jeudi 31 juillet 2014 20:00
    jeudi 31 juillet 2014 19:59