Пример #1
0
        //合并(测试)
        public void merge()
        {
            List <int>      parentid = new List <int>();
            List <CataItem> list     = new List <CataItem>();

            using (var cmd = m_liteDB.CreateCommand())
            {
                //查询所有修改过后的结点
                cmd.CommandText = "SELECT id,newname,parent FROM catalog where identifying =2";
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        //组装字典
                        CataItem item = new CataItem();
                        int      a    = reader.GetInt32(0);
                        string   ab   = reader.GetString(1);
                        item.Id   = reader.GetInt32(0);
                        item.Name = reader.GetString(1);
                        parentid.Add(reader.GetInt32(2));
                        list.Add(item);
                    }
                }
            }

            LiteDB NewliteDB = new LiteDB(m_folder);

            NewliteDB.Open(0);

            using (var newcmd = NewliteDB.CreateCommand())
            {
                for (int j = 0; j < list.Count; j++)
                {
                    newcmd.CommandText = string.Format("SELECT id,name,parent FROM catalog where id='{0}'", parentid[j]);
                    using (var updatereader = newcmd.ExecuteReader())
                    {
                        if (updatereader.Read())
                        {
                            using (var updatecom = NewliteDB.CreateCommand())
                            {
                                updatecom.CommandText = string.Format("UPDATE catalog set name='{0}',audit='{1}' where id={2}", list[j].Name, 1, list[j].Id);
                                updatecom.ExecuteScalar();
                            }
                        }
                        else
                        {
                            using (var cmd = m_liteDB.CreateCommand())
                            {
                                cmd.CommandText = string.Format("SELECT id,name,parent FROM catalog where id='{0}'", parentid[j]);
                                using (var readerparent = cmd.ExecuteReader())
                                {
                                    while (readerparent.Read())
                                    {
                                        using (var addcom = NewliteDB.CreateCommand())
                                        {
                                            addcom.CommandText = string.Format("insert into catalog(id,name,parent) values('{0}','{1}','{2}')", readerparent.GetInt32(0), readerparent.GetString(1), readerparent.GetInt32(2));
                                            addcom.ExecuteScalar();
                                        }
                                    }
                                }

                                using (var updatecom = NewliteDB.CreateCommand())
                                {
                                    updatecom.CommandText = string.Format("UPDATE catalog set name='{0}',audit='{1}' where id={2}", list[j].Name, 1, list[j].Id);
                                    updatecom.ExecuteScalar();
                                }
                            }
                        }
                    }
                }
            }
            NewliteDB.Close();
        }
Пример #2
0
        //合并(测试)
        public string merge2()
        {
            List <CataItem> list     = new List <CataItem>();
            List <int>      parentid = new List <int>();

            using (var cmd = m_liteDB.CreateCommand())
            {
                cmd.CommandText = "SELECT id,name,parent FROM catalog where identifying =0";
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        //组装字典
                        CataItem item = new CataItem();
                        item.Id   = reader.GetInt32(0);
                        item.Name = reader.GetString(1);
                        parentid.Add(reader.GetInt32(2));
                        list.Add(item);
                    }
                }
            }

            //打开下载的文件
            LiteDB NewliteDB = new LiteDB(m_folder);

            NewliteDB.Open(0);
            using (var newcmd = NewliteDB.CreateCommand())
            {
                for (int j = 0; j < parentid.Count; j++)
                {
                    newcmd.CommandText = string.Format("SELECT id,name,parent FROM catalog where id='{0}'", parentid[j]);
                    using (var reader = newcmd.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            using (var addcom = NewliteDB.CreateCommand())
                            {
                                addcom.CommandText = string.Format("insert into catalog(id,name,parent,audit) values('{0}','{1}','{2}','{3}')", list[j].Id, list[j].Name, parentid[j], 1);
                                addcom.ExecuteScalar();
                            }
                        }
                        else
                        {
                            using (var cmd = m_liteDB.CreateCommand())
                            {
                                cmd.CommandText = string.Format("SELECT id,name,parent FROM catalog where id='{0}'", parentid[j]);
                                using (var readerparent = cmd.ExecuteReader())
                                {
                                    while (readerparent.Read())
                                    {
                                        using (var addcom = NewliteDB.CreateCommand())
                                        {
                                            addcom.CommandText = string.Format("insert into catalog(id,name,parent) values('{0}','{1}','{2}')", readerparent.GetInt32(0), readerparent.GetString(1), readerparent.GetInt32(2));
                                            addcom.ExecuteScalar();
                                        }
                                    }
                                }

                                using (var addcom = NewliteDB.CreateCommand())
                                {
                                    addcom.CommandText = string.Format("insert into catalog(id,name,parent,audit) values('{0}','{1}','{2}','{3}')", list[j].Id, list[j].Name, parentid[j], 1);
                                    addcom.ExecuteScalar();
                                }
                            }
                        }
                    }
                }
            }
            NewliteDB.Close();
            Updatetreeview();
            return("a");
        }
Пример #3
0
        //读数据库树形节点
        private void LoadCatalog()
        {
            var dictPID = new Dictionary <int, int>();

            dictCatalog = new Dictionary <int, CataItem>();
            using (var cmd = m_liteDB.CreateCommand())
            {
                if (ServerManagement.id == 1)
                {
                    cmd.CommandText = "SELECT id,name,parent,newname,audit FROM catalog ";
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            //组装字典
                            CataItem item = new CataItem();
                            item.Id      = reader.GetInt32(0);
                            item.Name    = reader.GetString(1);
                            item.NewName = reader.GetString(3);
                            //item.Audit = reader.GetInt32(4).ToString();
                            if (reader.GetInt32(4) == 1)
                            {
                                item.Audit = "未审核";
                            }
                            else
                            {
                                item.Audit = "";
                            }
                            dictCatalog.Add(reader.GetInt32(0), item);
                            //0位当前id, 2位父节点id
                            dictPID.Add(item.Id, reader.GetInt32(2));
                        }
                    }
                }
                else
                {
                    cmd.CommandText = string.Format("SELECT id,name,parent,newname,NameID FROM catalog where NameID='{0}' or audit=0 ", ServerManagement.id);
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            CataItem item = new CataItem();
                            item.Id = reader.GetInt32(0);

                            if (reader.GetString(3) != "" && ServerManagement.id != 0)
                            {
                                item.Name = reader.GetString(3);
                            }
                            else
                            {
                                item.Name = reader.GetString(1);
                            }
                            //if (reader.GetInt32(4) != -1)
                            //{
                            item.NameId = reader.GetInt32(4);
                            //}

                            item.Audit = "";
                            dictCatalog.Add(reader.GetInt32(0), item);
                            //组装字典
                            //0位当前id, 2位父节点id
                            dictPID.Add(item.Id, reader.GetInt32(2));
                        }
                    }
                }

                //对 父子节点进行组装
                foreach (var key in dictCatalog.Keys)
                {
                    //找到当前节点
                    var c = dictCatalog[key];
                    //获取当前节点的父节点id
                    var parentID = dictPID[c.Id];
                    if (dictCatalog.ContainsKey(parentID))
                    {
                        //获取父节点对象
                        var parent = dictCatalog[parentID];
                        //指定当前节点的父节点
                        c.Parent = parent;
                        //给父节点的Children集合加入当前节点
                        parent.Children.Add(c);
                    }
                }
            }
        }