【发布时间】:2020-05-17 11:45:17
【问题描述】:
我尝试使用我的 C# 应用程序从 MySql 上的表中检索数据。因此,我应用了通常的连接方法,以便将我的 c# 应用程序连接到我的 MySql 数据库,并调用适当的方法从表中检索数据,然后将其显示在我的应用程序上。但是,我注意到仅使用以下代码:
conString = "server=localhost;user id=" + user + ";database=db;password="+pass;
connection = new MySqlConnection(conString);
DataTable table = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM users", connection);
adapter.Fill(table);
dataGridView1.DataSource = table;
我可以从表格中检索数据并显示,而无需使用以下代码:
connection.Open();
如果我只需要以下代码来检索数据,那么使用connection.Open() 的目的是什么?我什么时候需要使用connection.Open()?
只有当我从我的应用程序向 mysql 发送信息时才需要使用connection.Open(),但是当我想从 MySql 获取/检索信息时我不需要使用connection.Open(),这是正确的吗?
【问题讨论】:
-
我没有使用过这个 MySql 库,但我确信当你调用
adapter.Fill(table)时MySqlDataAdapter正在为你打开连接 -
@Xerillio 谢谢。那么你什么时候知道什么时候使用connection.Open()?还是允许在您第一次使用前两行代码连接到数据库时调用它?
-
如果发现连接已关闭,DataAdapter 派生类始终会自行打开连接。如果它打开,那么它在完成时也会关闭。所以如果你打算使用适配器,你真的不需要打开。这不适用于其他 ADO.NET 对象,例如 DbCommand 派生类