Desde a intenção de chamar
adapter.Fill(table); é recuperar dados do banco de dados, eu esperaria muito que o Fill método abre a conexão se ainda não estiver. Você só precisaria chamar explicitamente
Open se você pretende operar na connection diretamente em vez de através de classes auxiliares como MySqlDataAdapter por exemplo. É claro que você pode abri-lo sempre que quiser. No entanto, sugiro que você coloque a conexão em um
using declaração para garantir que ela seja fechada e descartada quando você terminar com ela:using (var connection = new MySqlConnection(conString))
{
DataTable table = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM users", connection);
adapter.Fill(table);
dataGridView1.DataSource = table;
}
// Now you are sure the connection is closed and being properly garbage collected