diff --git a/TShockAPI/Extensions/DbExt.cs b/TShockAPI/Extensions/DbExt.cs index b4fc7c31..6d52aec2 100644 --- a/TShockAPI/Extensions/DbExt.cs +++ b/TShockAPI/Extensions/DbExt.cs @@ -65,13 +65,13 @@ namespace TShockAPI.DB try { db.Open(); - using (var com = db.CreateCommand()) + var com = db.CreateCommand(); // this will be disposed via the QueryResult instance { com.CommandText = query; for (int i = 0; i < args.Length; i++) com.AddParameter("@" + i, args[i]); - return new QueryResult(db, com.ExecuteReader()); + return new QueryResult(db, com.ExecuteReader(), com); } } catch (Exception ex) @@ -117,13 +117,13 @@ namespace TShockAPI.DB { var db = olddb.CloneEx(); db.Open(); - using (var com = db.CreateCommand()) + var com = db.CreateCommand(); // this will be disposed via the QueryResult instance { com.CommandText = query; foreach (var kv in values) com.AddParameter("@" + kv.Key, kv.Value); - return new QueryResult(db, com.ExecuteReader()); + return new QueryResult(db, com.ExecuteReader(), com); } } @@ -274,11 +274,13 @@ namespace TShockAPI.DB { public IDbConnection Connection { get; protected set; } public IDataReader Reader { get; protected set; } + public IDbCommand Command { get; protected set; } - public QueryResult(IDbConnection conn, IDataReader reader) + public QueryResult(IDbConnection conn, IDataReader reader, IDbCommand command) { Connection = conn; Reader = reader; + Command = command; } ~QueryResult() @@ -301,6 +303,11 @@ namespace TShockAPI.DB Reader.Dispose(); Reader = null; } + if (Command != null) + { + Command.Dispose(); + Command = null; + } if (Connection != null) { Connection.Dispose(); diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 798b5a5b..3d0fd494 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -28,7 +28,6 @@ using System.Linq; using System.Net; using System.Reflection; using MaxMind; -using System.Data.SQLite; using MySql.Data.MySqlClient; using Newtonsoft.Json; using Rests; @@ -261,7 +260,7 @@ namespace TShockAPI }; // if sqlite.interop cannot be found, try and search the runtimes folder. this usually happens when debugging tsapi // since it does not have the dependency installed directly - NativeLibrary.SetDllImportResolver(typeof(SQLiteConnection).Assembly, ResolveNativeDep); + NativeLibrary.SetDllImportResolver(typeof(Microsoft.Data.Sqlite.SqliteConnection).Assembly, ResolveNativeDep); Main.SettingsUnlock_WorldEvil = true; @@ -322,7 +321,7 @@ namespace TShockAPI { string sql = Path.Combine(SavePath, Config.Settings.SqliteDBPath); Directory.CreateDirectory(Path.GetDirectoryName(sql)); - DB = new SQLiteConnection(string.Format("Data Source={0},Version=3", sql)); + DB = new Microsoft.Data.Sqlite.SqliteConnection(string.Format("Data Source={0}", sql)); } else if (Config.Settings.StorageType.ToLower() == "mysql") { @@ -441,8 +440,16 @@ namespace TShockAPI } catch (Exception ex) { - Log.ConsoleError("Fatal Startup Exception"); - Log.ConsoleError(ex.ToString()); + if (Log is not null) + { + Log.ConsoleError("Fatal Startup Exception"); + Log.ConsoleError(ex.ToString()); + } + else + { + Console.WriteLine("Fatal Startup Exception"); + Console.WriteLine(ex.ToString()); + } Environment.Exit(1); } } diff --git a/TShockAPI/TShockAPI.csproj b/TShockAPI/TShockAPI.csproj index 0976c16d..ffb1afb4 100644 --- a/TShockAPI/TShockAPI.csproj +++ b/TShockAPI/TShockAPI.csproj @@ -30,8 +30,7 @@ - - + diff --git a/TShockLauncher/TShockLauncher.csproj b/TShockLauncher/TShockLauncher.csproj index d84c9a12..fa29a381 100644 --- a/TShockLauncher/TShockLauncher.csproj +++ b/TShockLauncher/TShockLauncher.csproj @@ -25,8 +25,7 @@ - - +