
下面是错误代码:
超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.
描述:执行当前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# – 达到错误最大池大小?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)