public MySQLRowsReader ExecuteReader(MySqlConnection connection, MySqlTransaction transaction, string sql, params MySqlParameter[] args) { var createLocalConnection = false; if (connection == null) { connection = NewConnection(); transaction = null; connection.Open(); createLocalConnection = true; } var result = new MySQLRowsReader(); using (var cmd = new MySqlCommand(sql, connection)) { if (transaction != null) { cmd.Transaction = transaction; } foreach (var arg in args) { cmd.Parameters.Add(arg); } var dataReader = cmd.ExecuteReader(); result.Init(dataReader); dataReader.Close(); } if (createLocalConnection) { connection.Close(); } return(result); }