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(); } }
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); } } } }
internal void MergeWith(VolumeDatabase source) { discs.AddRange(source.GetDiscs()); mergeLogicalFolders(source.GetLogicalFolders()); }