簡體   English   中英

為什么我的 C# 應用程序仍然在不使用 connection.Open() 的情況下從 MySql 檢索數據

[英]Why does my C# application still retrieves data from MySql without using connection.Open()

我嘗試使用我的 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() ,這是正確的嗎?

由於調用adapter.Fill(table);的意圖是從數據庫中檢索數據我非常希望Fill方法打開連接,如果它還沒有。

如果您打算直接對connection進行操作,而不是通過諸如MySqlDataAdapter之類的輔助類,則只需要顯式調用Open 當然,您可以隨時打開它。

但是,我建議您將連接放在using語句中,以確保在完成后將其關閉並處理掉:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM