Esempio n. 1
0
 public void Dispose()
 {
     try
     {
         if (Database != null)
         {
             Database.Close();
         }
         Database = null;
     } catch { }
     try
     {
         if (_engine != null)
         {
             _engine.FreeLocks();
             _engine = null;
         }
     }
     catch { }
     try
     {
         if (Connection != null)
         {
             Connection.Close();
         }
         Connection = null;
     } catch { }
 }
Esempio n. 2
0
 //Статические члены
 //Закрывает базу
 public static void CloseDatabase(Database db)
 {
     try { db.Close(); }
     catch { }
     try
     {
         if (_engineStatic != null)
         {
             _engineStatic.FreeLocks();
             _engineStatic = null;
         }
     }
     catch { }
 }
Esempio n. 3
0
        //Сжатие базы данных
        public static void Compress(string file,          //файл базы
                                    int size,             //размер а байтах, после которого нужно сжимать
                                    string tmpDir = null, //каталог временных фалов
                                    int timeout   = 0)    //время ожидания после сжатия в мс
        {
            if (file.IsEmpty())
            {
                throw new NullReferenceException("Файл сжимаемой базы данных не может быть пустой строкой или null");
            }

            var fdb = new FileInfo(file);

            if (fdb.Length < size)
            {
                return;
            }
            string sdir = fdb.Directory.FullName;

            if (tmpDir != null)
            {
                var dir = new DirectoryInfo(tmpDir);
                if (!dir.Exists)
                {
                    dir.Create();
                }
                sdir = tmpDir;
            }
            var ftmp = new FileInfo(sdir + @"\Tmp" + fdb.Name);

            if (ftmp.Exists)
            {
                ftmp.Delete();
            }
            fdb.MoveTo(ftmp.FullName);
            new FileInfo(file).Delete();
            var en = new DBEngine();

            en.CompactDatabase(ftmp.FullName, file);
            en.FreeLocks();
            en = null;
            GC.Collect();
            if (timeout > 0)
            {
                Thread.Sleep(timeout);
            }
        }