2014-10-05 38 views
-1
 private void FoodList_Load(object sender, EventArgs e) { 

     try { 
       **Connections.con.Open();** 

       OleDbCommand cmd = new OleDbCommand(); 
       cmd.Connection = Connections.con; 
       string foodcon = "SELECT ID, FoodName FROM FoodList"; 
       cmd.CommandText = foodcon; 
       OleDbDataReader reader = cmd.ExecuteReader(); 

       while (reader.Read()) 
       { 
        listBox1.Items.Add(reader["FoodName"].ToString()); 
       } 


     } 
     catch (Exception err) 
     { 
      MessageBox.Show("Error " + err); 

     } 
     **Connections.con.Close();** 

连接的问题已经关闭的代码下面的连接,但是当我登录有一个错误,告诉我该连接仍然是开放的?有什么建议么?错误关闭在C#中访问数据库

+0

使用单身连接是一个坏主意。 – SLaks 2014-10-05 02:33:17

+0

你是什么意思单身连接? – 2014-10-05 02:37:42

+0

有一个静态连接。 – SLaks 2014-10-05 02:40:40

回答

1

如上所述,创建命令对象时应该创建连接对象。你应该这样做:

using (var connection = new OleDbConnection("...")) 
using (var command = new OleDbCommand("...", connection)) 
{ 
    connection.Open(); 

    using (var reader = command.ExecuteReader()) 
    { 
     // ... 
    } 
} 
+0

class Connections {public static OleDbConnection con =新的OleDbConnection(@“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = .. // NewEmployees.accdb”); } – 2014-10-05 03:00:40

+0

我有一个在另一个窗体上......所以我可以随时调用它?我还需要使用吗? – 2014-10-05 03:01:09

+0

@JoeyEguna是的,你应该把db连接代码放在一个using语句中,以确保连接在不需要时关闭和处理。 – 2014-10-05 03:06:32