none
c# SqlServerCe datatable RRS feed

  • Question

  • Salutation a tous

    j'aimerais savoir si c'est possible de creer une table a l'interieur d'une table

    si oui, comment je dois faire ca

    si non, quel serait le meilleur approche si?

     table="MaTable"

    l'autre serait "Employe"

    les champs;

    champs 1="Titre"

    champs 2="Fonction"

    champs 3= "Description" 

    champs 4="Remarques" 

       


    BigDan
    dimanche 30 octobre 2011 19:48

Réponses

Toutes les réponses

  • Bonsoir

    Votre approche n'est pas assez claire

    Pourquoi créer une table dans une autre? ou vous créez une seule table ou 2 tables séparé en les reliant par une clé étrangère par exemple


    Best Regards...Please mark as answer if my post is helpful
    • Proposé comme réponse Badii Gharbi dimanche 30 octobre 2011 20:44
    dimanche 30 octobre 2011 20:15
  • Salutation YosrJ OK je comprend le principe

    mais mon probleme est que je sais pas trop comment parce le programme que suis a monte ne fonctionne pas que je croyait cela se ferais.

    si je dois creer deux table avec jonction l'une a l'autre par id

    ce que je tente de recreer est celle de editeur snippets en base de donnée et nom en repertoire et fichiers

    si ca te donne une idee sur ce que je veut faire

    Merci

     


    BigDan
    lundi 31 octobre 2011 16:11
    • Modifié fred75 lundi 31 octobre 2011 16:37
    lundi 31 octobre 2011 16:36
  • Bonsoir

    Si c'est possible postez votre code


    Best Regards...Please mark as answer if my post is helpful
    lundi 31 octobre 2011 16:41
  • Bonsoir

    Si c'est possible postez votre code


    Best Regards...Please mark as answer if my post is helpful


    bien voila le code que je vien ecrire pour les deux table maintenant il me reste a les lier par codes ce que je trouve pas. Avant je creait une seule table et la mon probleme.

     

     

     


    BigDan

     

     

     

     

    private void CreateNewGroup(string strNGTable)
    {
    SqlCeConnection cn = new SqlCeConnection(ConnectString());
    if (cn.State == ConnectionState.Closed)
    {
    cn.Open();
    }
    SqlCeCommand cmd;
    sql = "create table [" + strNGTable + "]"
    + " (GroupeNameID INT IDENTITY (1,1) PRIMARY KEY not null, "
    + "GroupeName nvarchar(100))";
    cmd = new SqlCeCommand(sql, cn);
    cmd.ExecuteNonQuery();
    cn.Close();
    }
    private void CreateNewSnippet(string strNSTable)
    {
    SqlCeConnection cn = new SqlCeConnection(ConnectString());
    if (cn.State == ConnectionState.Closed)
    {
    cn.Open();
    }
    SqlCeCommand cmd;
    sql = "create table [" + strNSTable + "]"
    + " (SID INT IDENTITY (1,1) PRIMARY KEY not null, "
    + "GroupNameID INT, "
    + "STitle NVarChar(100), "
    + "SDescription NVarChar(256), "
    + "SCodes NTEXT)";
    cmd = new SqlCeCommand(sql, cn);
    cmd.ExecuteNonQuery(); 
    cn.Close();
    }

     il me reste a lier les tables ca je sait pas faire encore par code mais je sais pas si le code precedent est correcte.

     

    lundi 31 octobre 2011 17:14
  • Bonsoir

     

    Pour le lien entre les 2 tables tu execute la requete ci dessous avec la meme méthode que t'a utilisé

     

    ALTER TABLE TABLE1  ADD  CONSTRAINT [FK_TABLE1_1_TABLE_2] FOREIGN KEY(GroupNameID)
    REFERENCES TABLE2 (GroupNameID)
    



    Best Regards...Please mark as answer if my post is helpful
    lundi 31 octobre 2011 18:10
  • Bonsoir

     

    Pour le lien entre les 2 tables tu execute la requete ci dessous avec la meme méthode que t'a utilisé

     

     

    ALTER TABLE TABLE1  ADD  CONSTRAINT [FK_TABLE1_1_TABLE_2] FOREIGN KEY(GroupNameID)
    REFERENCES TABLE2 (GroupNameID)
    


     


    Best Regards...Please mark as answer if my post is helpful

    voila ce que j'ai fait pour l'instant

    j'ai du modifier  un peut mes commande parceque cela me causait des maux de tete.

    la commande OK est la suivante

    public partial class NewSnip : Form
        {
            public string UserInput
            {
                get { return txtNG.Text; }
            }
    
            public NewSnip()
            {
                InitializeComponent();
            }
    
            private void btnOK_Click(object sender, EventArgs e)
            {
                if (ckCSharp.Checked==true)
                {
                    CDB.Instance().strNGTable = "C#";
                }
                else if(ckVB.Checked==true)
                {
                    CDB.Instance().strNGTable = "VB";
                }
                else if(ckCpp.Checked==true)
                {
                    CDB.Instance().strNGTable = "C++";
                }
                else if(ckASPNET.Checked==true)
                {
                    CDB.Instance().strNGTable = "AspNet";
                }
                DialogResult = System.Windows.Forms.DialogResult.OK;
            } 
        }

     

    jusque la ca va


    mon codes pour creer les table et la contarinte 

    public void CreateNewSnippet(string strNSTable)
            {
                using (SqlCeConnection cn = new SqlCeConnection(ConnectString()))
                {
                    using (SqlCeCommand cmd = new SqlCeCommand("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=@" + strNSTable, cn))
                    {
                        cmd.Parameters.AddWithValue("@" + strNSTable, strNSTable);
                        if (cn.State == ConnectionState.Closed)
                        {
                            cn.Open();
                        }
                        int résultat;
                        résultat = Convert.ToInt32(cmd.ExecuteScalar());
                        if (résultat == 1)
                        {
                            cn.Close();
                            return;
                        }
                        else
                        {
                            SqlCeCommand SCC;
    
                            sql = "create table [" + strNGTable + "]"
                                + " (GroupNameID INT IDENTITY (1,1) PRIMARY KEY not null, "
                                + "GroupName NVarChar(100))";
                            SCC = new SqlCeCommand(sql, cn);
                            SCC.ExecuteNonQuery();
    
                            sql = "insert into [" + strNGTable + "]"
                                + " (GroupName) "
                                + "values (@GroupName)";
                            SCC = new SqlCeCommand(sql, cn);
                            SCC.Parameters.AddWithValue("@GroupName", strNGTable);
                            SCC.ExecuteNonQuery(); 
    
                            sql = "create table [" + strNSTable + "]"
                                + " (SID INT IDENTITY (1,1) PRIMARY KEY not null, "
                                + "GroupNameID INT not null, "
                                + "STitle NVarChar(100), "
                                + "SDescription NVarChar(256), "
                                + "SCodes NTEXT)";
                            SCC = new SqlCeCommand(sql, cn);
                            SCC.ExecuteNonQuery(); 
                            
                            sql = "ALTER TABLE [" + strNSTable + "] ADD  CONSTRAINT [" + strNSTable + "_" + strNGTable + "] "
                                + "FOREIGN KEY (GroupNameID) "
                                + "REFERENCES " + strNGTable + " (GroupNameID)";
                            SCC = new SqlCeCommand(sql, cn);
                            SCC.ExecuteNonQuery();
    
    
                            cn.Close();
                        }
                    }
                }
            }
             
            

    j'ai pas tout placer mais semble suffisant pour te données une idee

    j'aimerais savoir si comme ca c'est bon et pour la commande save si ya une facon differente de proceder de celle ci:

     SqlCeConnection cn = new SqlCeConnection(ConnectString());
                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();
                }
                SqlCeCommand cmd;
                string sql = "insert into snippets" 
                    + " (STitle,SDescription, SCodes) "
                    + "values (@title, @description, @codes)";
                cmd = new SqlCeCommand(sql, cn);
                cmd.Parameters.AddWithValue("@title", strTitle);
                cmd.Parameters.AddWithValue("@description", strDescription);
                cmd.Parameters.AddWithValue("@codes", strCodes); 
                cmd.ExecuteNonQuery();
                cn.Close();
                cn = null;


    Merci


    BigDan
    lundi 31 octobre 2011 23:56
  • Bonjour

    A première vue votre code est correct mais à mon avi ce n'est pas très esthétique niveau base de donnée vu qu'à chaque fois que vous executer votre code en c sharp les insertions seront faites et les create vont générer une erreur si la table est déjà crée.

    Ce que je vous suggère de faire est de créer une transaction niveau code behind .Quand il y a une erreur dans votre code les requetes ne seront pas executé et vos tables  ne seront pas créé surtout qu'il y a une clé étrangère

    Voici un lien avec code pour mieux comprendre

    http://msdn.microsoft.com/en-us/library/5ha4240h.aspx

    Pour le save si vous voulez dire par la mettre à jour donc la requete sera du genre update table1 set champ1 where id=@id .Mais si c'est juste une insertion alors votre code est correct

    la question qui se pose est si Votre code en totalité s'execute sans erreurs?

     

    Cordialement

     


    Best Regards...Please mark as answer if my post is helpful
    • Modifié YosrJ mardi 1 novembre 2011 08:02
    mardi 1 novembre 2011 08:01
  • Salutation YosrJ

    jusqua la creation de la base de données et les  tables jusque la ca va

    ce qui cause probleme c'est la sauveguarde des données

    car en plus de sauver les données de snippets je dois aussi enregistrer l'id dans l'autre Table jexplique

    le programme creer la base de donnée puis selont les choix les table a partir du form

    si le chois est C# et le nom du groupe de snippets est "abc"

    il cree la table c# avec

    • GroupNameID

    • GroupName

    puis va creer une autre table nommée ABC

    • SID
    • GroupNameID
    • STitle
    • SDescription
    • SCodes

    et lie les deux table par GroupNameID

    jusque la tous va

    le probleme est la sauveguarde

    ca fonctionne pas

    je sais que je dois faire un insert avec inner join mais je trouve pas comment j'ai essayer beaucoup de code que j'ai vue sur le net, mais ????

    Merci   


    BigDan
    mardi 1 novembre 2011 13:03
  • tu veux insérer des valeurs donc dans les tables ABC et c sharp? 

    Si oui alors c'est quoi cette ligne 

     

         string sql = "insert into snippets" 
                    + " (STitle,SDescription, SCodes) "
                    + "values (@title, @description, @codes)";  ???


    Et sachez qu'un insert ne sera pas possible si vous avez des foreign key 

    Il faut insérer les valeurs avant puis executez le script add constrainst 

     


    Best Regards...Please mark as answer if my post is helpful
    • Modifié YosrJ mardi 1 novembre 2011 13:30
    mardi 1 novembre 2011 13:27
  • Bonjour,

    Pourquoi ne pas créer une table avec un champ langage comme cela ce sera plus facile de rechercher ?

    Select * from tablecode where champLangage = langageRecherche AND codeChamp like %codeRecherché%

     


    fred on youTube
    HTML Document Creator on codeplex
    PHP MySQL Web Site Creator on codeplex
    fred
    • Marqué comme réponse DanielMorais mercredi 2 novembre 2011 01:59
    mardi 1 novembre 2011 13:48
  • re bonjour YosrJ

    string sql = "insert into snippets"
                    + " (STitle,SDescription, SCodes) "
                    + "values (@title, @description, @codes)";  ???

     je le sais c est pas fort mais mais je connais pas les autres insert pour les foreign key 

    c'est la tout le probleme.

    j'en suis encore a mes debut avec sqlExpress

    et parfois mes embition sont un peut trop grande mais j'essais de me debrouiller le plus possible et parfois je suis obliger le laisser tomber un temps et j'y retourne

    il me manque un peut de connaissance en la matiere mais je me debrouille.

    si ya des BON Tutot la dessus je les veut.

     

    Merci


    BigDan
    mardi 1 novembre 2011 19:26
  • bonjour Fred75

    Je commence a croir que cela serait mieux et plus simple que veut tu, c'est moi tout cracher. Je cherche toujour le plus diff.. quand y a plus facille.

    Merci a plus


    BigDan
    mardi 1 novembre 2011 19:29
  • Bonjour,

    S'il te manque des connaissances, plutot que de galérer, je te conseille vivement de suivre des tutos jusqu'à ce que tu trouves l'exemple qui te convient.

    J'ai suivi les tutos PHP, CSS, SQL de W3school et j'ai adoré

    http://www.w3schools.com/sql/default.asp

    ensuite tu peux suivre le coach C# ou VB (tout particulièrement l'atelier 5 sur SQL)

    http://msdn.microsoft.com/fr-fr/vbasic/bb265246

    ensuite si tu veux faire un éditeur de code snippet, dis-toi que tu n'est pas le premier développeur à vouloir le faire donc une petite recherche permettrait de trouver des exemples, voire exactement ce que ton idée :O)

    http://snippeteditor.codeplex.com/


    fred on youTube
    HTML Document Creator on codeplex
    PHP MySQL Web Site Creator on codeplex
    fred
    • Modifié fred75 mercredi 2 novembre 2011 00:16
    • Marqué comme réponse DanielMorais mercredi 2 novembre 2011 01:59
    mercredi 2 novembre 2011 00:07