Erro System.InvalidOperationException: 'Connection must be valid and open.' Não estou conseguindo conectar ao banco MySql no visual studio 2017 (c#) via servidor externo

Ao tentar conectar no banco de dados externo, aparece a mensagem System.InvalidOperationException: 'Connection must be valid and open. A situação é que quando criei o software em casa, utilizei o wampserver/localhost e funcionava corretamente, porém, ao tentar conectar no trabalho, utilizando as configurações do servidor, da o erro mencionado acima. Tentei utilizar o server com o IP e também com o localhost.

/////////////////SEGUE ABAIXO AS LINHAS DE CÓDIGOS\\\\\\\\\\\\\\\\

//////////////////CLASSE CONNECTION\\\\\\\\\\\\\\\
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;

namespace Livro_de_Partes
{
class Connection
{
public static MySqlConnection conexao = null;
private String stringconnection = “server=10.12.240.45;User Id = root; password=************;database=db_livrodepartes”;

    public void tentarAbrirConexaoLocal()
    {
        conexao = new MySqlConnection();
        conexao.ConnectionString = stringconnection;
        conexao.Open();
    }

    public Connection()
    {
        try
        {
            tentarAbrirConexaoLocal();
        }
        catch
        {
            Console.WriteLine("Não foi possível validar seu acesso.Tente novamente.");
        }
     }
    public static MySqlConnection getConexao()
    {
        new Connection();
        return conexao;
    }
    public static void fecharConexao()
    {
        conexao.Close();
    }
}   

}

////////////////////////CLASSE OPERACAOBANCO\\\\\\\\\\\\\\

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace Livro_de_Partes
{
class OperacaoBanco
{
private MySqlCommand TemplateMethod(String query)
{
MySqlConnection Conexao = Connection.getConexao();
MySqlCommand Comando = new MySqlCommand(query, Conexao);

        try
        {
            Comando.ExecuteNonQuery();
            return Comando;
        }
        catch
        {
            return Comando;
        }
    }

    public MySqlDataReader Select(String query)
    {
        MySqlDataReader dadosObtidos = TemplateMethod(query).ExecuteReader();
        return dadosObtidos;
    }

    public Boolean Insert(String query)
    {
        MySqlConnection Conexao = Connection.getConexao();
        MySqlCommand Comando = new MySqlCommand(query, Conexao);

        try
        {
            Comando.ExecuteNonQuery();
            return true;
        }
        catch
        {
            return false;
        }
    }

    public Boolean Update(String query)
    {
        MySqlConnection Conexao = Connection.getConexao();
        MySqlCommand Comando = new MySqlCommand(query, Conexao);

        try
        {
            Comando.ExecuteNonQuery();
            return true;
        }
        catch
        {
            return false;
        }
    }
    public Boolean Delete(String query)
    {
        MySqlConnection Conexao = Connection.getConexao();
        MySqlCommand Comando = new MySqlCommand(query, Conexao);

        try
        {
            Comando.ExecuteNonQuery();
            return true;
        }
        catch
        {
            return false;
        }
    }
}

}