我正在使用连接类进行连接,然后调用该类进行连接。
我多次使用连接后会冻结,然后出错。似乎我已经打开了许多连接,同时我无法弄清楚如何关闭打开的连接。如果那是真正的问题。
MyConnection
上课:
public class MyConnection
{
private SqlConnection _con;
public SqlCommand Cmd;
private SqlDataAdapter _da;
private DataTable _dt;
public MyConnection()
{
_con = new SqlConnection("Data Source=192.168.1.12\\grs;Initial Catalog=BGI;Persist Security Info=True;User ID=awplanung;Password=pass");
_con.Open();
}
public void SqlQuery(string queryText)
{
Cmd = new SqlCommand(queryText, _con);
}
public DataTable QueryEx()
{
_da = new SqlDataAdapter(Cmd);
_dt = new DataTable();
_da.Fill(_dt);
return _dt;
}
public void NonQueryEx()
{
Cmd.ExecuteNonQuery();
}
}
现在我从我的表单中调用这个连接:就像这个。
MyConnection con = new MyConnection();
con.SqlQuery("SELECT ARartikelnr ,ARartikelbezeich, ARartwarengruppe, ARanzahleinheiten, ARinhalteinheiten, ARanzgebindepal FROM BGARTIKEL where ARartikelnr BETWEEN '" + textBox2.Text + "' and '" + textBox3.Text + "' order by ARinhalteinheiten, ARartwarengruppe");
dt = con.QueryEx();
每次我打开一个新表格我都会
MyConnection con = new MyConnection();
并制作许多类似的
con.SqlQuery("Select string")
打开第二个表单后,当我进行新的长选择时,它会冻结。奇怪的是,我已经毫无问题地使用了这两种形式,但在第一种形式中,我使用按钮进行了数据网格填充。现在我改变了如果直接从表单加载填充。当我转到下一个表单时,我无法在新表单上填充我的其他数据网格,从而产生错误。
错误:
超时已过期。从池中获取连接之前经过的超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。
答案 0 :(得分:2)
使您的MyConnection类一次性使用。完成数据后将其丢弃。
(公共类MyConnection:IDisposable)
public void Dispose() { _con.Dispose(); }
使用(MyConnection con = new MyConnection()) { con.SqlQuery( “...”); dt = con.QueryEx(); }