diff --git a/MCGalaxy/Database/Backends/Interfaces.cs b/MCGalaxy/Database/Backends/Interfaces.cs
index 330b47148..656728852 100644
--- a/MCGalaxy/Database/Backends/Interfaces.cs
+++ b/MCGalaxy/Database/Backends/Interfaces.cs
@@ -20,36 +20,33 @@ using System;
namespace MCGalaxy.SQL
{
/// Abstracts a connection to a SQL database
- public abstract class ISqlConnection : IDisposable
+ public interface ISqlConnection : IDisposable
{
- public abstract ISqlTransaction BeginTransaction();
- public abstract ISqlCommand CreateCommand(string sql);
+ ISqlTransaction BeginTransaction();
+ ISqlCommand CreateCommand(string sql);
- public abstract void Open();
- public abstract void ChangeDatabase(string name);
- public abstract void Close();
- public abstract void Dispose();
+ void Open();
+ void ChangeDatabase(string name);
+ void Close();
}
/// Abstracts a SQL command/statement
- public abstract class ISqlCommand : IDisposable
+ public interface ISqlCommand : IDisposable
{
- public abstract void ClearParameters();
- public abstract void AddParameter(string name, object value);
+ void ClearParameters();
+ void AddParameter(string name, object value);
- public abstract void Prepare();
+ void Prepare();
/// Executes this command and returns the number of rows affected
- public abstract int ExecuteNonQuery();
+ int ExecuteNonQuery();
/// Executes this command and returns an ISqlReader for reading the results
- public abstract ISqlReader ExecuteReader();
- public abstract void Dispose();
+ ISqlReader ExecuteReader();
}
- public abstract class ISqlTransaction : IDisposable
+ public interface ISqlTransaction : IDisposable
{
- public abstract void Commit();
- public abstract void Rollback();
- public abstract void Dispose();
+ void Commit();
+ void Rollback();
}
/// Abstracts iterating over the results from executing a SQL command
diff --git a/MCGalaxy/Database/Backends/MySQL.cs b/MCGalaxy/Database/Backends/MySQL.cs
index 0873ee62c..879288cc9 100644
--- a/MCGalaxy/Database/Backends/MySQL.cs
+++ b/MCGalaxy/Database/Backends/MySQL.cs
@@ -24,7 +24,7 @@ using MySql.Data.MySqlClient;
namespace MCGalaxy.SQL
{
- public sealed class MySQLBackend : IDatabaseBackend
+ public class MySQLBackend : IDatabaseBackend
{
public static IDatabaseBackend Instance = new MySQLBackend();
public MySQLBackend() {
@@ -33,10 +33,10 @@ namespace MCGalaxy.SQL
CaselessLikeSuffix = "";
}
- public override bool EnforcesTextLength { get { return true; } }
+ public override bool EnforcesTextLength { get { return true; } }
public override bool EnforcesIntegerLimits { get { return true; } }
public override bool MultipleSchema { get { return true; } }
- public override string EngineName { get { return "MySQL"; } }
+ public override string EngineName { get { return "MySQL"; } }
public override ISqlConnection CreateConnection() {
const string format = "Data Source={0};Port={1};User ID={2};Password={3};Pooling={4};Treat Tiny As Boolean=false;";
@@ -164,20 +164,20 @@ namespace MCGalaxy.SQL
public readonly MySqlConnection conn;
public MySQLConnection(MySqlConnection conn) { this.conn = conn; }
- public override ISqlTransaction BeginTransaction() {
+ public ISqlTransaction BeginTransaction() {
MySqlTransaction trn = conn.BeginTransaction();
return new MySQLTransaction(trn);
}
- public override ISqlCommand CreateCommand(string sql) {
+ public ISqlCommand CreateCommand(string sql) {
MySqlCommand cmd = new MySqlCommand(sql, conn);
return new MySQLCommand(cmd);
}
- public override void Open() { conn.Open(); }
- public override void ChangeDatabase(string name) { conn.ChangeDatabase(name); }
- public override void Close() { conn.Close(); }
- public override void Dispose() { conn.Dispose(); }
+ public void Open() { conn.Open(); }
+ public void ChangeDatabase(string name) { conn.ChangeDatabase(name); }
+ public void Close() { conn.Close(); }
+ public void Dispose() { conn.Dispose(); }
}
sealed class MySQLCommand : ISqlCommand
@@ -185,18 +185,18 @@ namespace MCGalaxy.SQL
readonly MySqlCommand cmd;
public MySQLCommand(MySqlCommand cmd) { this.cmd = cmd; }
- public override void ClearParameters() {
+ public void ClearParameters() {
cmd.Parameters.Clear();
}
- public override void AddParameter(string name, object value) {
+ public void AddParameter(string name, object value) {
cmd.Parameters.AddWithValue(name, value);
}
- public override void Dispose() { cmd.Dispose(); }
- public override void Prepare() { cmd.Prepare(); }
- public override int ExecuteNonQuery() { return cmd.ExecuteNonQuery(); }
+ public void Dispose() { cmd.Dispose(); }
+ public void Prepare() { cmd.Prepare(); }
+ public int ExecuteNonQuery() { return cmd.ExecuteNonQuery(); }
- public override ISqlReader ExecuteReader() {
+ public ISqlReader ExecuteReader() {
MySqlDataReader rdr = cmd.ExecuteReader();
return new MySQLReader(rdr);
}
@@ -207,9 +207,9 @@ namespace MCGalaxy.SQL
readonly MySqlTransaction trn;
public MySQLTransaction(MySqlTransaction trn) { this.trn = trn; }
- public override void Commit() { trn.Commit(); }
- public override void Rollback() { trn.Rollback(); }
- public override void Dispose() { trn.Dispose(); }
+ public void Commit() { trn.Commit(); }
+ public void Rollback() { trn.Rollback(); }
+ public void Dispose() { trn.Dispose(); }
}
sealed class MySQLReader : ISqlReader
diff --git a/MCGalaxy/Database/Backends/SQLite.cs b/MCGalaxy/Database/Backends/SQLite.cs
index f627c91f0..6f5b1f893 100644
--- a/MCGalaxy/Database/Backends/SQLite.cs
+++ b/MCGalaxy/Database/Backends/SQLite.cs
@@ -23,7 +23,7 @@ using MCGalaxy.Platform;
namespace MCGalaxy.SQL
{
- public sealed class SQLiteBackend : IDatabaseBackend
+ public class SQLiteBackend : IDatabaseBackend
{
public static IDatabaseBackend Instance = new SQLiteBackend();
public SQLiteBackend() {
@@ -31,10 +31,10 @@ namespace MCGalaxy.SQL
CaselessLikeSuffix = " COLLATE NOCASE";
}
- public override bool EnforcesTextLength { get { return false; } }
+ public override bool EnforcesTextLength { get { return false; } }
public override bool EnforcesIntegerLimits { get { return false; } }
public override bool MultipleSchema { get { return false; } }
- public override string EngineName { get { return "SQLite"; } }
+ public override string EngineName { get { return "SQLite"; } }
public override ISqlConnection CreateConnection() {
return new MCGSQLiteConnection();
diff --git a/MCGalaxy/Database/Backends/SQLiteBackend.cs b/MCGalaxy/Database/Backends/SQLiteBackend.cs
index e275f1c7e..ebca1a394 100644
--- a/MCGalaxy/Database/Backends/SQLiteBackend.cs
+++ b/MCGalaxy/Database/Backends/SQLiteBackend.cs
@@ -105,13 +105,13 @@ namespace MCGalaxy.SQL
protected abstract bool ConnectionPooling { get; }
protected abstract string DBPath { get; }
- public override ISqlTransaction BeginTransaction() {
+ public ISqlTransaction BeginTransaction() {
return new SQLiteTransaction(this);
}
- public override void ChangeDatabase(string databaseName) { }
+ public void ChangeDatabase(string databaseName) { }
- public override ISqlCommand CreateCommand(string sql) { return new SQLiteCommand(sql, this); }
+ public ISqlCommand CreateCommand(string sql) { return new SQLiteCommand(sql, this); }
public long LastInsertRowId {
get {
@@ -170,7 +170,7 @@ namespace MCGalaxy.SQL
}
}
- public override void Open() {
+ public void Open() {
if (handle != IntPtr.Zero) throw new InvalidOperationException();
try {
@@ -226,8 +226,8 @@ namespace MCGalaxy.SQL
return false;
}
- public override void Dispose() { Close(false); }
- public override void Close() { Close(true); }
+ public void Dispose() { Close(false); }
+ public void Close() { Close(true); }
void Close(bool canThrow) {
if (handle == IntPtr.Zero) return;
@@ -291,7 +291,7 @@ namespace MCGalaxy.SQL
stmt = null;
}
- public override void Dispose() {
+ public void Dispose() {
conn = null;
param_names.Clear();
param_values.Clear();
@@ -316,19 +316,19 @@ namespace MCGalaxy.SQL
return stmt;
}
- public override void Prepare() { }
+ public void Prepare() { }
- public override void ClearParameters() {
+ public void ClearParameters() {
param_names.Clear();
param_values.Clear();
}
- public override void AddParameter(string name, object value) {
+ public void AddParameter(string name, object value) {
param_names.Add(name);
param_values.Add(value);
}
- public override ISqlReader ExecuteReader() {
+ public ISqlReader ExecuteReader() {
SQLiteConnection.Check(conn);
SQLiteDataReader reader = new SQLiteDataReader(this);
@@ -336,7 +336,7 @@ namespace MCGalaxy.SQL
return reader;
}
- public override int ExecuteNonQuery() {
+ public int ExecuteNonQuery() {
using (ISqlReader reader = ExecuteReader()) {
while (reader.Read()) { }
return reader.RowsAffected;
@@ -835,7 +835,7 @@ namespace MCGalaxy.SQL
}
}
- public sealed class SQLiteTransaction : ISqlTransaction
+ public class SQLiteTransaction : ISqlTransaction
{
SQLiteConnection conn;
@@ -855,13 +855,13 @@ namespace MCGalaxy.SQL
}
bool disposed;
- public override void Dispose() {
+ public void Dispose() {
if (disposed) return;
if (IsValid(false)) IssueRollback(false);
disposed = true;
}
- public override void Commit() {
+ public void Commit() {
SQLiteConnection.Check(conn);
IsValid(true);
@@ -873,7 +873,7 @@ namespace MCGalaxy.SQL
conn = null;
}
- public override void Rollback() {
+ public void Rollback() {
SQLiteConnection.Check(conn);
IsValid(true);
IssueRollback(true);
diff --git a/MCGalaxy/Database/IDatabaseBackend.cs b/MCGalaxy/Database/IDatabaseBackend.cs
index 088911030..d6f07dec1 100644
--- a/MCGalaxy/Database/IDatabaseBackend.cs
+++ b/MCGalaxy/Database/IDatabaseBackend.cs
@@ -152,7 +152,7 @@ namespace MCGalaxy.SQL
#region Raw SQL functions
/// Executes an SQL command and returns the number of affected rows.
- public int Execute(string sql, object[] parameters, bool createDB) {
+ public virtual int Execute(string sql, object[] parameters, bool createDB) {
int rows = 0;
using (ISqlConnection conn = CreateConnection()) {
@@ -170,7 +170,7 @@ namespace MCGalaxy.SQL
}
/// Excecutes an SQL query, invoking a callback on the returned rows one by one.
- public int Iterate(string sql, object[] parameters, ReaderCallback callback) {
+ public virtual int Iterate(string sql, object[] parameters, ReaderCallback callback) {
int rows = 0;
using (ISqlConnection conn = CreateConnection()) {