Ponieważ zamiar wywołania adapter.Fill(table); jest pobieranie danych z bazy danych. Bardzo oczekiwałbym, że Fill metoda otwiera połączenie, jeśli jeszcze nie jest.
Musisz tylko jawnie wywołać Open jeśli zamierzasz operować na connection bezpośrednio zamiast przez klasy pomocnicze, takie jak MySqlDataAdapter na przykład. Możesz go oczywiście otworzyć, kiedy tylko masz na to ochotę.
Sugerowałbym jednak umieszczenie połączenia w using oświadczenie, aby upewnić się, że jest zamknięty i usunięty, gdy skończysz:
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