public DbTableIter( ref EsEmTable Tbl ) { _Table = Tbl; DbTools.WaitForFile(); Reload(); }
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!"); } }