日期:2014-05-20  浏览次数:20937 次

OleDbCommand的connection何时关闭?
刚刚做了一个主细表,就是别左边用户列表,右边显示该用户的资料,并可以修改,删除等常规操作,刚刚发现一个问题,
在填充左侧LISTBOX时,while   OleDbDataReader.reload后就将OleDbDataReader释放掉了,这时候没有释放OleDbCommand的connection属性,
问题出来了,如果关闭该窗口,再次打开,提示我“连接未关闭。连接的当前状态为已打开。”,因为没有释放它,
但是我在窗口的private   void   user_close(object   sender,   FormClosingEventArgs   e)函数中却讯问不到OleDbCommand的connection?也就是说,无法OnClose时关闭connection,这可怎么办呀,
我在何时应该关闭它~

我现在的做法是,填充完LISTBOX后,关闭READER,关闭CONN
在listBox1_SelectedIndexChanged事件后,
重新建立READER和CONN,填充用户详细资料,之后再关闭READER,CONN
就是说,每次SelectedIndexChanged都会建立READER和CONN,用户没事儿点着看看就会产生无数次的“建立READER和CONN”,,,汗。


我感觉这样做法不是不科学不合理,而是很不科学很不合理,求高手指导,

------解决方案--------------------
conn.Open();
string sql= "select leave,count(*) from HYuser group by leave ";
SqlCommand co=new SqlCommand(sql,conn);
SqlDataReader re=co.ExecuteReader();
while(re.Read())
{
comboBox1.Items.Add(re.GetString(0));
}
conn.Close();
co.Dispose();
re.Close();