public static SQLiteDatabase CreateInMemoryDB(string filename) { // returns a copy of a database in memory // create an empty memory db first SQLiteDatabase memdb = new SQLiteDatabase(":memory:"); try { // open an existing on disk db SQLiteDatabase ondiskdb = new SQLiteDatabase(filename); ondiskdb.Open(); // get user & schema version int user_version = ondiskdb.GetUserVersion(); int schema_version = ondiskdb.GetSchemaVersion(); // get text encoding string text_encoding = ondiskdb.GetTextEncoding(); // get sql for creating structures string sql = "select sql from sqlite_master where name not like 'sqlite_%'"; DataTable structure = ondiskdb.Select(sql); // get user tables sql = "select name from sqlite_master where type = 'table' and name not like 'sqlite_%'"; DataTable usertables = ondiskdb.Select(sql); // crate identically structures in memmory db memdb.Open(); foreach (DataRow row in structure.Rows) { memdb.DBCommand.CommandText = row[0].ToString(); memdb.DBCommand.ExecuteNonQuery(); } // set user & schema version memdb.SetUserVerion(user_version); memdb.SetSchemaVerion(schema_version); // set text encoding memdb.SetTextEncoding(text_encoding); user_version = memdb.GetUserVersion(); text_encoding = memdb.GetTextEncoding(); // close on disk db ondiskdb.Close(); // attach on disk db to memory db memdb.AttachDatabase(filename, "ondisk"); memdb.BeginTransaction(); foreach (DataRow row in usertables.Rows) { memdb.DBCommand.CommandText = "insert into main." + row[0].ToString() + " select * from ondisk." + row[0].ToString(); memdb.DBCommand.ExecuteNonQuery(); } memdb.Commit(); memdb.DetachDatabase("ondisk"); memdb.DiskFileName = filename; } catch (Exception ex) { Console.WriteLine(ex.Message); } return(memdb); }
public PropagationHorizonDesignator PropagationHorizonFind(PropagationHorizonDesignator hor, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); // save localobstruction LocalObstructionDesignator obstr = hor.LocalObstruction; lock (db.DBCommand) { db.DBCommand.CommandText = "SELECT * FROM " + PropagationHorizonDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon AND h = @h AND Dist = @Dist AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); db.DBCommand.Parameters.Add(hor.AsDouble("Lat")); db.DBCommand.Parameters.Add(hor.AsDouble("Lon")); db.DBCommand.Parameters.Add(hor.AsDouble("h")); db.DBCommand.Parameters.Add(hor.AsDouble("Dist")); db.DBCommand.Parameters.Add(hor.AsDouble("QRG")); db.DBCommand.Parameters.Add(hor.AsDouble("Radius")); db.DBCommand.Parameters.Add(hor.AsDouble("F1_Clearance")); db.DBCommand.Parameters.Add(hor.AsDouble("StepWidth")); DataTable Result = db.Select(db.DBCommand); if ((Result != null) && (Result.Rows.Count > 0)) { return(new PropagationHorizonDesignator(Result.Rows[0], obstr)); } } return(null); }
public PropagationPathDesignator PropagationPathFind(PropagationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); // save localobstruction double obstr = path.LocalObstruction; lock (db.DBCommand) { db.DBCommand.CommandText = "SELECT * FROM " + PropagationPathDesignator.TableName + " WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND h1 = @h1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND h2 = @h2 AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); db.DBCommand.Parameters.Add(path.AsDouble("Lat1")); db.DBCommand.Parameters.Add(path.AsDouble("Lon1")); db.DBCommand.Parameters.Add(path.AsDouble("h1")); db.DBCommand.Parameters.Add(path.AsDouble("Lat2")); db.DBCommand.Parameters.Add(path.AsDouble("Lon2")); db.DBCommand.Parameters.Add(path.AsDouble("h2")); db.DBCommand.Parameters.Add(path.AsDouble("QRG")); db.DBCommand.Parameters.Add(path.AsDouble("Radius")); db.DBCommand.Parameters.Add(path.AsDouble("F1_Clearance")); db.DBCommand.Parameters.Add(path.AsDouble("StepWidth")); DataTable Result = db.Select(db.DBCommand); if ((Result != null) && (Result.Rows.Count > 0)) { return(new PropagationPathDesignator(Result.Rows[0], obstr)); } } return(null); }
public DataTable Select(string sql, System.Data.SQLite.SQLiteDatabase db = null) { if (db == null) { db = this.db; } if (db == null) { return(null); } return(db.Select(sql)); }
public DataTable Select(string sql) { return(db.Select(sql)); }