Change try catch blocks to include openning of connection.

This commit is contained in:
hondacrx
2017-07-08 23:31:02 -04:00
parent 23e9a60d6d
commit 9a33ac4319
+36 -33
View File
@@ -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);
}
} }
} }
@@ -85,13 +85,13 @@ namespace Framework.Database
Execute(new PreparedStatement(string.Format(sql, args))); Execute(new PreparedStatement(string.Format(sql, args)));
} }
public void Execute(PreparedStatement stmt) public void Execute(PreparedStatement stmt)
{
try
{ {
using (var Connection = _connectionInfo.GetConnection()) using (var Connection = _connectionInfo.GetConnection())
{ {
Connection.Open(); Connection.Open();
using (MySqlCommand cmd = Connection.CreateCommand()) using (MySqlCommand cmd = Connection.CreateCommand())
{
try
{ {
cmd.CommandText = stmt.CommandText; cmd.CommandText = stmt.CommandText;
foreach (var parameter in stmt.Parameters) foreach (var parameter in stmt.Parameters)
@@ -99,13 +99,13 @@ namespace Framework.Database
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
}
}
catch (MySqlException ex) catch (MySqlException ex)
{ {
HandleMySQLException(ex, stmt.CommandText); 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[]>();
try
{
using (var Connection = _connectionInfo.GetConnection()) using (var Connection = _connectionInfo.GetConnection())
{ {
Connection.Open(); Connection.Open();
using (MySqlCommand cmd = Connection.CreateCommand()) using (MySqlCommand cmd = Connection.CreateCommand())
{ {
try
{
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) catch (MySqlException ex)
{ {
HandleMySQLException(ex, stmt.CommandText); 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());
} }
} }
} }
@@ -210,8 +212,6 @@ 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 = ""; string query = "";
@@ -219,7 +219,7 @@ namespace Framework.Database
{ {
using (var Connection = _connectionInfo.GetConnection()) using (var Connection = _connectionInfo.GetConnection())
{ {
Connection.Open(); await Connection.OpenAsync();
foreach (var pair in holder.m_queries) foreach (var pair in holder.m_queries)
{ {
@@ -233,7 +233,7 @@ namespace Framework.Database
query = cmd.CommandText; query = cmd.CommandText;
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
{ {
@@ -242,7 +242,7 @@ namespace Framework.Database
reader.GetValues(row); reader.GetValues(row);
rows.Add(row); rows.Add(row);
} }
while (reader.Read()); while (await reader.ReadAsync());
} }
} }
} }
@@ -258,7 +258,6 @@ namespace Framework.Database
HandleMySQLException(ex, query); HandleMySQLException(ex, query);
return holder; return holder;
} }
});
} }
public void LoadPreparedStatements() public void LoadPreparedStatements()
@@ -287,37 +286,41 @@ namespace Framework.Database
} }
public bool Apply(string sql) public bool Apply(string sql)
{
try
{ {
using (var Connection = _connectionInfo.GetConnectionNoDatabase()) using (var Connection = _connectionInfo.GetConnectionNoDatabase())
{ {
using (MySqlCommand cmd = Connection.CreateCommand()) using (MySqlCommand cmd = Connection.CreateCommand())
{ {
try
{
Connection.Open(); Connection.Open();
cmd.CommandText = sql; cmd.CommandText = sql;
return cmd.ExecuteNonQuery() > 0; return cmd.ExecuteNonQuery() > 0;
} }
}
}
catch (MySqlException ex) catch (MySqlException ex)
{ {
HandleMySQLException(ex, sql); HandleMySQLException(ex, sql);
return false; return false;
} }
} }
}
}
public bool ApplyFile(string path) public bool ApplyFile(string path)
{
try
{ {
using (var connection = _connectionInfo.GetConnection()) using (var connection = _connectionInfo.GetConnection())
{ {
using (MySqlCommand cmd = connection.CreateCommand()) using (MySqlCommand cmd = connection.CreateCommand())
{
try
{ {
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) catch (MySqlException ex)
{ {
@@ -325,8 +328,6 @@ namespace Framework.Database
return false; 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()