Vì ý định gọi adapter.Fill(table); là lấy dữ liệu từ cơ sở dữ liệu mà tôi rất mong đợi rằng Fill phương thức mở kết nối nếu nó chưa có.
Bạn chỉ cần gọi Open một cách rõ ràng nếu bạn định hoạt động trên kết nối connection trực tiếp thay vì thông qua các lớp trợ giúp như MySqlDataAdapter Ví dụ. Tất nhiên, bạn có thể mở nó bất cứ khi nào bạn muốn.
Tuy nhiên, tôi khuyên bạn nên đặt kết nối trong một using tuyên bố để đảm bảo rằng nó đã được đóng lại và xử lý khi bạn hoàn thành việc đó:
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