Ejemplo n.º 1
0
 public DbTableIter( ref EsEmTable Tbl )
 {
     _Table = Tbl;
     DbTools.WaitForFile();
     Reload();
 }
Ejemplo n.º 2
0
        public void OpenDatabase( string FilePath )
        {
            _FilePath = FilePath;
            FileStream Stream = null;
            try
            {
                Stream = File.OpenRead(FilePath);
                _Header.ReadHeader( ref Stream );
                if(_Header.Link.First != -1)
                {
                    EsEmTable tbl = new EsEmTable();
                    tbl.ReadTableHeader( ref Stream, _Header.Link.First );
                    tbl._Database = this;
                    _Tables.Add(tbl);
                    while(tbl._TableLink.Next != -1)
                    {
                        long NewOffset = tbl._TableLink.Next;
                        tbl = new EsEmTable();
                        tbl.ReadTableHeader( ref Stream, NewOffset );
                        tbl._Database = this;
                        _Tables.Add(tbl);
                    }
                }
                Stream.Close();

                string Query = "select * from $System";
                EsEmQuery q = CreateQuery(Query);
                EsEmResult Res = q.Execute();
                SysVars.Clear();
                while (Res.Read())
                {
                    SystemVar v = new SystemVar();
                    v.VarId = Convert.ToInt64(Res["id"]);
                    v.VarName = Convert.ToString(Res["varname"]);
                    v.VarValue = Convert.ToString(Res["varvalue"]);
                    SysVars.Add(v);
                }

                bool ShouldEnableCache = false;

                for (int i = 0; i < SysVars.Count; i++)
                    if (SysVars[i].VarName == "CacheRows")
                        if (SysVars[i].VarValue == "Yes")
                            ShouldEnableCache = true;

                if (ShouldEnableCache)
                {
                    EnableCacheTables();
                }
            }
            catch (Exception e)
            {
                if(e.Message != "NOTDB")
                {
                    if(Stream != null)
                        Stream.Close();
                    Stream = File.OpenWrite(FilePath);
                    _Header.DbVersionMajor = 1;
                    _Header.DbVersionMinor = 0;
                    _Header.WriteHeader(ref Stream);
                    Stream.Close();
                    string Query = "CREATE TABLE $System ( id integer primary key auto increment, varname text, varvalue text );";
                    EsEmQuery q = CreateQuery(Query);
                    q.Execute();
                    Query = "INSERT INTO $System (varname,varvalue) values ('CacheRows','No')";
                    q = CreateQuery(Query);
                    q.Execute();
                    Query = "select * from $System";
                    q = CreateQuery(Query);
                    EsEmResult Res = q.Execute();
                    SysVars.Clear();
                    while (Res.Read())
                    {
                        SystemVar v = new SystemVar();
                        v.VarId = Convert.ToInt64(Res["id"]);
                        v.VarName = Convert.ToString(Res["varname"]);
                        v.VarValue = Convert.ToString(Res["varvalue"]);
                        SysVars.Add(v);
                    }
                }
                else
                    throw new Exception("File Not EsEm Database!");
            }
        }