c# – 达到错误最大池大小?

c# – 达到错误最大池大小?,第1张

概述我想这是因为我没有关闭我的数据库的连接.我在下面为我的Datalayer发布了代码.我需要关闭我的连接吗?我怎么也这样做?这是造成问题的代码吗? 下面是错误代码: 超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小. 描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息. 异常详细信息:System. 我想这是因为我没有关闭我的数据库的连接.我在下面为我的Datalayer发布了代码.我需要关闭我的连接吗?我怎么也这样做?这是造成问题的代码吗?

下面是错误代码:

超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:system.invalIDOperationException:超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.

public Datatable getPictures()    {        //get database connection string from config file        string strConectionString = ConfigurationManager.AppSettings["DataBaseConnection"];        //set up sql        string Strsql = "SELECT MEMBERS.Membername,Picture.PicLoc,Picture.PicID,Picture.Picrating FROM Picture INNER JOIN MEMBERS ON Picture.MemberID = MEMBERS.MemberID WHERE (Picture.PicID = @n) AND (Picture.PicAproval = 1) AND (Picture.PicArchive = 0)AND (MEMBERS.MemberSex = 'F')";        Datatable dt = new Datatable();        using (sqlDataAdapter daObj = new sqlDataAdapter(Strsql,strConectionString))        {            daObj.SelectCommand.Parameters.Add("@n",sqlDbType.Int);            daObj.SelectCommand.Parameters["@n"].Value = GetItemFromArray();            //fill data table            daObj.Fill(dt);        }        return dt;    }public int GetItemFromArray()    {        int myRandomPictureID;        int[] pictureIDs = new int[GetTotalNumberOfAprovedPictureIDs()];        Random r = new Random();        int MYrandom = r.Next(0,pictureIDs.Length);        DLPicture GetPictureIDs = new DLPicture();        Datatable DAallAprovedPictureIDs = GetPictureIDs.GetPictureIDsIntoArray();        //Assign Location and rating to variables        int i = 0;        foreach (DaTarow row in DAallAprovedPictureIDs.Rows)        {            pictureIDs[i] = (int)row["PicID"];            i++;        }        myRandomPictureID = pictureIDs[MYrandom];        return myRandomPictureID;    } public Datatable GetPictureIDsIntoArray()    {        string strConectionString = ConfigurationManager.AppSettings["DataBaseConnection"];        //set up sql        string Strsql = " SELECT Picture.PicID FROM MEMBERS INNER JOIN Picture ON MEMBERS.MemberID = Picture.MemberID WHERE (Picture.PicAproval = 1) AND (Picture.PicArchive = 0) AND (MEMBERS.MemberSex ='F')";        Datatable dt = new Datatable();        using (sqlDataAdapter daObj = new sqlDataAdapter(Strsql,strConectionString))        {            //fill data table            daObj.Fill(dt);        }        return dt;    }
解决方法 我相信sqlDataAdapter自己处理连接.但是,在多个背靠背fill()到数据适配器的情况下,在每个fill()请求中打开连接的性能更高.结果是数据库连接被打开和关闭了好几次.

我认为您可以自己控制连接.

using (sqlConnection cnn= new sqlConnection (strConectionString))using (sqlDataAdapter daObj = new sqlDataAdapter(Strsql,cnn))    {        daObj.SelectCommand.Parameters.Add("@n",sqlDbType.Int);        daObj.SelectCommand.Parameters["@n"].Value = GetItemFromArray();        cnn.open();        //fill data table        daObj.Fill(dt);        cnn.Close();    }
总结

以上是内存溢出为你收集整理的c# – 达到错误最大池大小?全部内容,希望文章能够帮你解决c# – 达到错误最大池大小?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1243653.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存