示例#1
0
        private static void WriteData(SQLiteConnection conn, VolumeDatabase mem)
        {
            foreach (var disc in mem.GetDiscs())
            {
                using (var tx = conn.BeginTransaction())
                {
                    WriteDisc(conn, disc);
                    tx.Commit();
                }
            }

            using (var tx = conn.BeginTransaction())
            {
                foreach (var lFold in mem.GetLogicalFolders())
                {
                    WriteLFold(conn, lFold);
                    WriteLFoldMap(conn, lFold);
                }
                tx.Commit();
            }
        }
示例#2
0
        private static void ReadLogicalFolders(SQLiteConnection conn, VolumeDatabase mem)
        {
            var lFoldList = mem.GetLogicalFolders();

            // Note: order by owner insures that sub-folders are after their parents and hookup works
            string txt = "select * from LFold ORDER BY Owner";

            using (SQLiteCommand cmd = new SQLiteCommand(txt, conn))
            {
                using (SQLiteDataReader rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
/*
 * [ID] INTEGER NOT NULL PRIMARY KEY,
 * [Owner] INTEGER NOT NULL,
 * [Name] TEXT,
 * [Desc] TEXT,
 * [Type] INTEGER
 */
                        LogicalFolder lfold = new LogicalFolder();
                        lfold.DbId        = rdr.GetInt32(0);
                        lfold.Name        = rdr.GetString(2);
                        lfold.Description = rdr.GetString(3);
                        lfold.FolderType  = (LogicalFolderType)rdr.GetInt32(4);

                        int owner = rdr.GetInt32(1);
                        if (owner != 0)
                        {
                            HookupParent(lfold, rdr.GetInt32(1), lFoldList);
                        }
                        else
                        {
                            lFoldList.Add(lfold);
                        }
                        _lfoldHash.Add(lfold.DbId, lfold);
                    }
                }
            }
        }
示例#3
0
 internal void MergeWith(VolumeDatabase source)
 {
     discs.AddRange(source.GetDiscs());
     mergeLogicalFolders(source.GetLogicalFolders());
 }