diff --git a/ChanSort.Loader.Panasonic/Serializer.cs b/ChanSort.Loader.Panasonic/Serializer.cs index 1d5b416..8557cb7 100644 --- a/ChanSort.Loader.Panasonic/Serializer.cs +++ b/ChanSort.Loader.Panasonic/Serializer.cs @@ -24,7 +24,7 @@ namespace ChanSort.Loader.Panasonic private CypherMode cypherMode; private byte[] fileHeader = new byte[0]; private int dbSizeOffset; - private bool littleEndianByteOrder = false; + private bool littleEndianByteOrder; private string charEncoding; enum CypherMode @@ -331,9 +331,10 @@ namespace ChanSort.Loader.Panasonic using (var conn = new SQLiteConnection(channelConnString)) { conn.Open(); - InitCharacterEncoding(conn); using (var cmd = conn.CreateCommand()) { + RepairCorruptedDatabaseImage(cmd); + InitCharacterEncoding(cmd); this.ReadChannels(cmd); } } @@ -481,13 +482,18 @@ namespace ChanSort.Loader.Panasonic #endregion #region InitCharacterEncoding() - private void InitCharacterEncoding(SQLiteConnection conn) + private void InitCharacterEncoding(SQLiteCommand cmd) { - using (var cmd = conn.CreateCommand()) - { - cmd.CommandText = "PRAGMA encoding"; - this.charEncoding = cmd.ExecuteScalar() as string; - } + cmd.CommandText = "PRAGMA encoding"; + this.charEncoding = cmd.ExecuteScalar() as string; + } + #endregion + + #region RepairCorruptedDatabaseImage() + private void RepairCorruptedDatabaseImage(SQLiteCommand cmd) + { + cmd.CommandText = "REINDEX"; + cmd.ExecuteNonQuery(); } #endregion @@ -572,6 +578,7 @@ order by s.ntype,major_channel this.WriteChannels(cmd, this.freesatChannels); trans.Commit(); } + this.RepairCorruptedDatabaseImage(cmd); } } diff --git a/ChanSort.Loader.Toshiba/DbSerializer.cs b/ChanSort.Loader.Toshiba/DbSerializer.cs index 9e9ac55..db5f2ac 100644 --- a/ChanSort.Loader.Toshiba/DbSerializer.cs +++ b/ChanSort.Loader.Toshiba/DbSerializer.cs @@ -55,6 +55,7 @@ namespace ChanSort.Loader.Toshiba conn.Open(); using (var cmd = conn.CreateCommand()) { + this.RepairCorruptedDatabaseImage(cmd); this.ReadSatellites(cmd); this.ReadTransponders(cmd); } @@ -131,6 +132,14 @@ namespace ChanSort.Loader.Toshiba } #endregion + #region RepairCorruptedDatabaseImage() + private void RepairCorruptedDatabaseImage(SQLiteCommand cmd) + { + cmd.CommandText = "REINDEX"; + cmd.ExecuteNonQuery(); + } + #endregion + #region ReadSatellites() private void ReadSatellites(SQLiteCommand cmd) { @@ -302,6 +311,7 @@ namespace ChanSort.Loader.Toshiba this.WriteChannels(cmd, "EuroSATChanList", this.satRadioChannels); trans.Commit(); } + this.RepairCorruptedDatabaseImage(cmd); } } diff --git a/ChanSort/MainForm.cs b/ChanSort/MainForm.cs index 5c6f1e8..3c4f1f6 100644 --- a/ChanSort/MainForm.cs +++ b/ChanSort/MainForm.cs @@ -25,7 +25,7 @@ namespace ChanSort.Ui { public partial class MainForm : XtraForm { - public const string AppVersion = "v2013-11-23"; + public const string AppVersion = "v2013-11-24"; private const int MaxMruEntries = 10; diff --git a/readme.txt b/readme.txt index b531679..69acf67 100644 --- a/readme.txt +++ b/readme.txt @@ -1,10 +1,7 @@ -Version v2013-11-23 ======================================================= +Version v2013-11-24 ======================================================= Changes: -- Channel lists can now be printed -- Fix: Error when saving Toshiba and Panasonic channel list which contained - red proxy entries for missing channels after applying a reference list -- Fix: Modified Panasonic channel names were not written to the file +- Load and repair corrupted Panasonic and Toshiba SQLite channel lists The complete change log can be found at the end of this document @@ -113,6 +110,9 @@ OTHER DEALINGS IN THE SOFTWARE. Change log ================================================================ +2013-11-24 +- Load and repair corrupted Panasonic and Toshiba SQLite channel lists + 2013-11-23 - Channel lists can now be printed - Fix: Error when saving Toshiba and Panasonic channel list which contained