Change try catch blocks to include openning of connection.
This commit is contained in:
@@ -65,18 +65,18 @@ namespace Framework.Database
|
|||||||
_connectionInfo = new MySqlConnectionInfo(connectionObject);
|
_connectionInfo = new MySqlConnectionInfo(connectionObject);
|
||||||
_updater = new DatabaseUpdater<T>(this);
|
_updater = new DatabaseUpdater<T>(this);
|
||||||
|
|
||||||
using (var connection = _connectionInfo.GetConnection())
|
try
|
||||||
{
|
{
|
||||||
try
|
using (var connection = _connectionInfo.GetConnection())
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
Log.outInfo(LogFilter.SqlDriver, "Connected to MySQL(ver: {0}) Database: {1}", connection.ServerVersion, _connectionInfo.Database);
|
Log.outInfo(LogFilter.SqlDriver, "Connected to MySQL(ver: {0}) Database: {1}", connection.ServerVersion, _connectionInfo.Database);
|
||||||
return MySqlErrorCode.None;
|
return MySqlErrorCode.None;
|
||||||
}
|
}
|
||||||
catch (MySqlException ex)
|
}
|
||||||
{
|
catch (MySqlException ex)
|
||||||
return (MySqlErrorCode)((MySqlException)ex.InnerException).Number;
|
{
|
||||||
}
|
return HandleMySQLException(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,12 +86,12 @@ namespace Framework.Database
|
|||||||
}
|
}
|
||||||
public void Execute(PreparedStatement stmt)
|
public void Execute(PreparedStatement stmt)
|
||||||
{
|
{
|
||||||
using (var Connection = _connectionInfo.GetConnection())
|
try
|
||||||
{
|
{
|
||||||
Connection.Open();
|
using (var Connection = _connectionInfo.GetConnection())
|
||||||
using (MySqlCommand cmd = Connection.CreateCommand())
|
|
||||||
{
|
{
|
||||||
try
|
Connection.Open();
|
||||||
|
using (MySqlCommand cmd = Connection.CreateCommand())
|
||||||
{
|
{
|
||||||
cmd.CommandText = stmt.CommandText;
|
cmd.CommandText = stmt.CommandText;
|
||||||
foreach (var parameter in stmt.Parameters)
|
foreach (var parameter in stmt.Parameters)
|
||||||
@@ -99,12 +99,12 @@ namespace Framework.Database
|
|||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
catch (MySqlException ex)
|
|
||||||
{
|
|
||||||
HandleMySQLException(ex, stmt.CommandText);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (MySqlException ex)
|
||||||
|
{
|
||||||
|
HandleMySQLException(ex, stmt.CommandText);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecuteOrAppend(SQLTransaction trans, PreparedStatement stmt)
|
public void ExecuteOrAppend(SQLTransaction trans, PreparedStatement stmt)
|
||||||
@@ -123,13 +123,14 @@ namespace Framework.Database
|
|||||||
public SQLResult Query(PreparedStatement stmt)
|
public SQLResult Query(PreparedStatement stmt)
|
||||||
{
|
{
|
||||||
List<object[]> rows = new List<object[]>();
|
List<object[]> rows = new List<object[]>();
|
||||||
using (var Connection = _connectionInfo.GetConnection())
|
try
|
||||||
{
|
{
|
||||||
Connection.Open();
|
using (var Connection = _connectionInfo.GetConnection())
|
||||||
using (MySqlCommand cmd = Connection.CreateCommand())
|
|
||||||
{
|
{
|
||||||
try
|
Connection.Open();
|
||||||
|
using (MySqlCommand cmd = Connection.CreateCommand())
|
||||||
{
|
{
|
||||||
|
|
||||||
cmd.CommandText = stmt.CommandText;
|
cmd.CommandText = stmt.CommandText;
|
||||||
foreach (var parameter in stmt.Parameters)
|
foreach (var parameter in stmt.Parameters)
|
||||||
cmd.Parameters.AddWithValue("@" + parameter.Key, parameter.Value);
|
cmd.Parameters.AddWithValue("@" + parameter.Key, parameter.Value);
|
||||||
@@ -149,12 +150,13 @@ namespace Framework.Database
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (MySqlException ex)
|
|
||||||
{
|
|
||||||
HandleMySQLException(ex, stmt.CommandText);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (MySqlException ex)
|
||||||
|
{
|
||||||
|
HandleMySQLException(ex, stmt.CommandText);
|
||||||
|
}
|
||||||
|
|
||||||
return new SQLResult(rows);
|
return new SQLResult(rows);
|
||||||
}
|
}
|
||||||
@@ -177,7 +179,7 @@ namespace Framework.Database
|
|||||||
{
|
{
|
||||||
using (var Connection = _connectionInfo.GetConnection())
|
using (var Connection = _connectionInfo.GetConnection())
|
||||||
{
|
{
|
||||||
Connection.Open();
|
await Connection.OpenAsync();
|
||||||
using (MySqlCommand cmd = Connection.CreateCommand())
|
using (MySqlCommand cmd = Connection.CreateCommand())
|
||||||
{
|
{
|
||||||
cmd.CommandText = stmt.CommandText;
|
cmd.CommandText = stmt.CommandText;
|
||||||
@@ -186,7 +188,7 @@ namespace Framework.Database
|
|||||||
|
|
||||||
using (var reader = await cmd.ExecuteReaderAsync())
|
using (var reader = await cmd.ExecuteReaderAsync())
|
||||||
{
|
{
|
||||||
if (reader.Read() && reader.HasRows)
|
if (await reader.ReadAsync() && reader.HasRows)
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@@ -195,7 +197,7 @@ namespace Framework.Database
|
|||||||
reader.GetValues(row);
|
reader.GetValues(row);
|
||||||
rows.Add(row);
|
rows.Add(row);
|
||||||
}
|
}
|
||||||
while (reader.Read());
|
while (await reader.ReadAsync());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -211,54 +213,51 @@ namespace Framework.Database
|
|||||||
|
|
||||||
public async Task<SQLQueryHolder<R>> DelayQueryHolder<R>(SQLQueryHolder<R> holder)
|
public async Task<SQLQueryHolder<R>> DelayQueryHolder<R>(SQLQueryHolder<R> holder)
|
||||||
{
|
{
|
||||||
return await Task.Run(async () =>
|
string query = "";
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
string query = "";
|
using (var Connection = _connectionInfo.GetConnection())
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
using (var Connection = _connectionInfo.GetConnection())
|
await Connection.OpenAsync();
|
||||||
|
|
||||||
|
foreach (var pair in holder.m_queries)
|
||||||
{
|
{
|
||||||
Connection.Open();
|
List<object[]> rows = new List<object[]>();
|
||||||
|
using (MySqlCommand cmd = Connection.CreateCommand())
|
||||||
foreach (var pair in holder.m_queries)
|
|
||||||
{
|
{
|
||||||
List<object[]> rows = new List<object[]>();
|
cmd.CommandText = pair.Value.stmt.CommandText;
|
||||||
using (MySqlCommand cmd = Connection.CreateCommand())
|
foreach (var parameter in pair.Value.stmt.Parameters)
|
||||||
|
cmd.Parameters.AddWithValue("@" + parameter.Key, parameter.Value);
|
||||||
|
|
||||||
|
query = cmd.CommandText;
|
||||||
|
using (var reader = await cmd.ExecuteReaderAsync())
|
||||||
{
|
{
|
||||||
cmd.CommandText = pair.Value.stmt.CommandText;
|
if (await reader.ReadAsync() && reader.HasRows)
|
||||||
foreach (var parameter in pair.Value.stmt.Parameters)
|
|
||||||
cmd.Parameters.AddWithValue("@" + parameter.Key, parameter.Value);
|
|
||||||
|
|
||||||
query = cmd.CommandText;
|
|
||||||
using (var reader = await cmd.ExecuteReaderAsync())
|
|
||||||
{
|
{
|
||||||
if (reader.Read() && reader.HasRows)
|
do
|
||||||
{
|
{
|
||||||
do
|
var row = new object[reader.FieldCount];
|
||||||
{
|
|
||||||
var row = new object[reader.FieldCount];
|
|
||||||
|
|
||||||
reader.GetValues(row);
|
reader.GetValues(row);
|
||||||
rows.Add(row);
|
rows.Add(row);
|
||||||
}
|
|
||||||
while (reader.Read());
|
|
||||||
}
|
}
|
||||||
|
while (await reader.ReadAsync());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.SetResult(pair.Key, new SQLResult(rows));
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return holder;
|
holder.SetResult(pair.Key, new SQLResult(rows));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (MySqlException ex)
|
|
||||||
{
|
return holder;
|
||||||
HandleMySQLException(ex, query);
|
}
|
||||||
return holder;
|
catch (MySqlException ex)
|
||||||
}
|
{
|
||||||
});
|
HandleMySQLException(ex, query);
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadPreparedStatements()
|
public void LoadPreparedStatements()
|
||||||
@@ -288,44 +287,46 @@ namespace Framework.Database
|
|||||||
|
|
||||||
public bool Apply(string sql)
|
public bool Apply(string sql)
|
||||||
{
|
{
|
||||||
using (var Connection = _connectionInfo.GetConnectionNoDatabase())
|
try
|
||||||
{
|
{
|
||||||
using (MySqlCommand cmd = Connection.CreateCommand())
|
using (var Connection = _connectionInfo.GetConnectionNoDatabase())
|
||||||
{
|
{
|
||||||
try
|
using (MySqlCommand cmd = Connection.CreateCommand())
|
||||||
{
|
{
|
||||||
|
|
||||||
Connection.Open();
|
Connection.Open();
|
||||||
cmd.CommandText = sql;
|
cmd.CommandText = sql;
|
||||||
return cmd.ExecuteNonQuery() > 0;
|
return cmd.ExecuteNonQuery() > 0;
|
||||||
}
|
}
|
||||||
catch (MySqlException ex)
|
|
||||||
{
|
|
||||||
HandleMySQLException(ex, sql);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (MySqlException ex)
|
||||||
|
{
|
||||||
|
HandleMySQLException(ex, sql);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ApplyFile(string path)
|
public bool ApplyFile(string path)
|
||||||
{
|
{
|
||||||
using (var connection = _connectionInfo.GetConnection())
|
try
|
||||||
{
|
{
|
||||||
using (MySqlCommand cmd = connection.CreateCommand())
|
using (var connection = _connectionInfo.GetConnection())
|
||||||
{
|
{
|
||||||
try
|
using (MySqlCommand cmd = connection.CreateCommand())
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
cmd.CommandText = File.ReadAllText(path);
|
cmd.CommandText = File.ReadAllText(path);
|
||||||
return cmd.ExecuteNonQuery() > 0;
|
return cmd.ExecuteNonQuery() > 0;
|
||||||
}
|
|
||||||
catch (MySqlException ex)
|
|
||||||
{
|
|
||||||
HandleMySQLException(ex, path);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (MySqlException ex)
|
||||||
|
{
|
||||||
|
HandleMySQLException(ex, path);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EscapeString(ref string str)
|
public void EscapeString(ref string str)
|
||||||
@@ -338,6 +339,7 @@ namespace Framework.Database
|
|||||||
using (var Connection = _connectionInfo.GetConnection())
|
using (var Connection = _connectionInfo.GetConnection())
|
||||||
{
|
{
|
||||||
string query = "";
|
string query = "";
|
||||||
|
|
||||||
Connection.Open();
|
Connection.Open();
|
||||||
using (MySqlTransaction trans = Connection.BeginTransaction())
|
using (MySqlTransaction trans = Connection.BeginTransaction())
|
||||||
{
|
{
|
||||||
@@ -366,13 +368,13 @@ namespace Framework.Database
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleMySQLException(MySqlException ex, string query)
|
MySqlErrorCode HandleMySQLException(MySqlException ex, string query = "")
|
||||||
{
|
{
|
||||||
int code = ex.Number;
|
MySqlErrorCode code = (MySqlErrorCode)ex.Number;
|
||||||
if (ex.InnerException != null)
|
if (ex.InnerException != null)
|
||||||
code = ((MySqlException)ex.InnerException).Number;
|
code = (MySqlErrorCode)((MySqlException)ex.InnerException).Number;
|
||||||
|
|
||||||
switch ((MySqlErrorCode)code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case MySqlErrorCode.BadFieldError:
|
case MySqlErrorCode.BadFieldError:
|
||||||
case MySqlErrorCode.NoSuchTable:
|
case MySqlErrorCode.NoSuchTable:
|
||||||
@@ -384,6 +386,7 @@ namespace Framework.Database
|
|||||||
}
|
}
|
||||||
|
|
||||||
Log.outError(LogFilter.Sql, "SqlException: {0} SqlQuery: {1}", ex.Message, query);
|
Log.outError(LogFilter.Sql, "SqlException: {0} SqlQuery: {1}", ex.Message, query);
|
||||||
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DatabaseUpdater<T> GetUpdater()
|
public DatabaseUpdater<T> GetUpdater()
|
||||||
|
|||||||
Reference in New Issue
Block a user