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 @@
-
-
+