public FileDatabase(bool readOnly) { this.readOnly = readOnly; this.dbConnector = new DBConnector(Constants.selectProgramAppDataFolder(Constants.DbFileName), Constants.FileNodesDefinition); // Connect to metadata regardless so it can be switched on whilst running string mdbPath = Constants.selectProgramAppDataFolder(Constants.MetadataFileName); this.metaDataDbConnector = new DBConnector( mdbPath, Constants.MetadataDefinition, false ); this.dbConnector.ExecuteNonQuery(@"ATTACH DATABASE '" + mdbPath + "' AS mdb;"); }
public DataRow getImageById(long id, long offset, string sortByColumn, SortOrder sortByDirection) { string tableName = this.filterReady(); SQLiteCommand command; DataRow dr; if (offset == 0) { command = new SQLiteCommand("SELECT * FROM `" + tableName + "` WHERE (id = @id) LIMIT 1;", this.dbConnector.connection); command.Parameters.AddWithValue("@id", id); dr = DBConnector.executeReaderFirstDataRow(command); if (dr == null) { return(this.getFirstImage(sortByColumn, sortByDirection)); } } else { if (sortByColumn == null) { sortByColumn = "path"; } if (sortByDirection == null) { sortByDirection = new SortOrder(SortOrder.Direction.ASC); } string than = "<"; if (sortByDirection.isDESC()) { offset *= -1; } if (offset < 0) { than = "<"; sortByDirection.setDESC(); } else { than = ">"; sortByDirection.setASC(); } string sqlValue = "(SELECT " + sortByColumn + " FROM `" + tableName + "` WHERE `" + tableName + "`.id = @id)"; string sql = "FROM `" + tableName + "` WHERE (" + sortByColumn + " " + than + " " + sqlValue + ") " + " OR ((" + sortByColumn + " = " + sqlValue + " AND id " + than + " @id)) " + "ORDER BY " + sortByColumn + " " + sortByDirection.ToString() + ", id " + sortByDirection.ToString(); command = new SQLiteCommand(@"SELECT * " + sql + " LIMIT 1 OFFSET " + (Math.Abs(offset) - 1) + ";", this.dbConnector.connection); command.Parameters.AddWithValue("@id", id); dr = DBConnector.executeReaderFirstDataRow(command); if (dr == null) { command = new SQLiteCommand(@"SELECT COUNT(`" + tableName + "`.id) " + sql, this.dbConnector.connection); command.Parameters.AddWithValue("@id", id); dr = DBConnector.executeReaderFirstDataRow(command); if (dr != null) { if (offset < 0) { offset += Convert.ToInt32(dr[0]) + 1; } else { offset -= Convert.ToInt32(dr[0]) + 1; } if (this.nrImagesFilter() > 0) { offset = offset % this.nrImagesFilter(); } dr = getFirstImage(sortByColumn, sortByDirection, offset); } } } return(dr); }
public DataRow nextMetadataLessImage() { SQLiteCommand command = new SQLiteCommand("SELECT * FROM `FileNodes` WHERE metainfoindexed = 0 LIMIT 1;", this.dbConnector.connection); return(DBConnector.executeReaderFirstDataRow(command)); }
public SQLiteConnection connectToDB() { this.dbConnector = new DBConnector(Constants.selectProgramAppDataFolder(Constants.PersistantConfigFileName), Constants.SettingsDefinition, false); //return new SQLiteConnection("Data Source=" + path + ";Version=3;"); return this.dbConnector.connection; }