日期:2014-05-19  浏览次数:20778 次

不知道该怎么办
我写的一个查询数据库的函数,如下,在第一次运行的时候,没有问题。但是连续第二次运行的时候,就会在标注的地方报错。说什么系统错误,郁闷的就是这种不清不楚的提示。   希望大家不吝赐教!

public   static   DataSet   Query(string   StrConnect,string   Strsql)
{
        int   icount=0;
        if(Strsql.Trim().Length> 0)
        {
                SqlConnection   conn   =   new   SqlConnection(StrConnect);
                conn.Open();
                System.Data.SqlClient.SqlDataAdapter   da=new   SqlDataAdapter(Strsql,conn);
                if(conn.State==ConnectionState.Open)
                {
                        conn.Close();
                }

                DataSet   ds=new   DataSet();
                if(ds.Tables.Count!=0)
                {
                        ds.Clear();
                }
                else
                {
                        //da.TableMappings.Clear();
                        da.Fill(ds);         //*****
                }
                return     ds;
        }
        else
        {
                return   null;
        }
}

------解决方案--------------------
没有关闭连接
在return ds 前 conn.Close();
------解决方案--------------------
用SqldataAdapter,就别con.Open(), con.Close()什么的了

Adapter会自动管理connection的,不用手动open, close

Adapter使用完连接后,会把connection恢复到使用之前的状态
------解决方案--------------------
不用static

public DataSet SelectData(string SQL,string TableName)
{
string strSQL=SQL;
myConn=new sqlConnection(stringConnection);
da=new SqlDataAdapter(strSQL,myConn);
da.fill(ds,TableName);
return ds;
}
------解决方案--------------------
在對數據綁定前:
this.dataGrid1.dataSource=null;