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()) {