diff --git a/DoomLauncher/Adapters/DbDataSourceAdapter.cs b/DoomLauncher/Adapters/DbDataSourceAdapter.cs index fe4b2a8e..df3cbf7c 100644 --- a/DoomLauncher/Adapters/DbDataSourceAdapter.cs +++ b/DoomLauncher/Adapters/DbDataSourceAdapter.cs @@ -302,7 +302,18 @@ public IEnumerable GetUtilities(bool loadArchived = false) => private IEnumerable GetSourcePorts(SourcePortLaunchType type, bool loadArchived) { int sqlArchive = loadArchived ? 1 : 0; - DataTable dt = DataAccess.ExecuteSelect($"select * from SourcePorts where LaunchType = {(int)type} and Archived = {sqlArchive} order by Name collate nocase").Tables[0]; + DataTable dt; + + try + { + dt = DataAccess.ExecuteSelect($"select * from SourcePorts where LaunchType = {(int)type} and Archived = {sqlArchive} order by Name collate nocase").Tables[0]; + } + catch + { + // This is for updates before Archived column existed... + dt = DataAccess.ExecuteSelect($"select * from SourcePorts where LaunchType = {(int)type}").Tables[0]; + } + List sourcePorts = new List(); foreach (DataRow dr in dt.Rows) @@ -324,24 +335,16 @@ private static ISourcePortData CreateSourcePortDataSource(DataTable dt, DataRow FileOption = (string)CheckDBNull(dr["FileOption"], string.Empty), ExtraParameters = (string)CheckDBNull(dr["ExtraParameters"], string.Empty), AltSaveDirectory = new LauncherPath((string)CheckDBNull(dr["AltSaveDirectory"], string.Empty)), - Archived = GetDBObject(dr["Archived"], false, - (object obj) => { return Convert.ToInt32(obj) != 0; }) }; if (dt.Columns.Contains("SettingsFiles")) sourcePort.SettingsFiles = (string)CheckDBNull(dr["SettingsFiles"], string.Empty); + if (dt.Columns.Contains("Archived")) + sourcePort.Archived = Convert.ToInt32(dr["Archived"]) != 0; return sourcePort; } - private static T GetDBObject(object obj, T defaultValue, Func convert) - { - if (obj == DBNull.Value) - return defaultValue; - - return convert(obj); - } - private static object CheckDBNull(object obj, object defaultValue) { if (obj == DBNull.Value) diff --git a/DoomLauncher/Handlers/VersionHandler.cs b/DoomLauncher/Handlers/VersionHandler.cs index 3e771b5f..37d41848 100644 --- a/DoomLauncher/Handlers/VersionHandler.cs +++ b/DoomLauncher/Handlers/VersionHandler.cs @@ -680,6 +680,11 @@ private void Pre_Version_3_3_0() private void Pre_Version_3_3_1() { + + string query = @"update SourcePorts set + SupportedExtensions = @SupportedExtensions + where SourcePortID = @sourcePortID"; + var sourcePorts = m_adapter.GetSourcePorts(); foreach (var sourcePort in sourcePorts) { @@ -687,7 +692,14 @@ private void Pre_Version_3_3_1() continue; sourcePort.SupportedExtensions += ",.pke"; - m_adapter.UpdateSourcePort(sourcePort); + + List parameters = new List + { + DataAccess.DbAdapter.CreateParameter("SupportedExtensions", sourcePort.SupportedExtensions), + DataAccess.DbAdapter.CreateParameter("sourcePortID", sourcePort.SourcePortID) + }; + + DataAccess.ExecuteNonQuery(query, parameters); } }