日期:2014-05-18  浏览次数:20434 次

超时时间已到,但是尚未从池中获取连接
大家帮我解决一下
错误提示为“超时时间已到,但是尚未从池中获取连接”

代码如下:

//创建DB连接
  Database   db   =   DatabaseFactory.CreateDatabase( "EHotelConnectionString ");

//调用存储过程
  DbCommand   dbcommandBr   =   db.GetStoredProcCommand( "Proc_InsertBreakfast ");
                                                db.AddInParameter(dbcommandBr,   "@ID ",   DbType.Int64,   objbreak.Key);
                                                db.AddInParameter(dbcommandBr,   "@EBreakfastTypeId ",   DbType.Int32,   objbreak.EBreakfastTypeId);
                                                db.AddInParameter(dbcommandBr,   "@Price ",   DbType.Int64,   objbreak.Price);
                                                db.AddInParameter(dbcommandBr,   "@IRoomTypePriceID ",   DbType.Int64,   objbreak.IRoomTypePriceID);
                                                db.AddInParameter(dbcommandBr,   "@RoomTypeID ",   DbType.Int64,   objbreak.RoomTypeID);
                                                db.AddInParameter(dbcommandBr,   "@HotelID ",   DbType.Int64,   objbreak.HotelID);

//执行
db.ExecuteNonQuery(dbcommandBr);

当程序执行一段时间后,就报错了。在百度上搜索一下说是DB连接没有关闭,但我用的是微软的企业库去操作DB的,操作完以后好象它会自动关闭其连接的。不知道是怎么回事了?


------解决方案--------------------
1.如果你用DataReader直接绑定到控件的话..那样连接是无法被马上释放的...
2.自己手动释放连接

------解决方案--------------------
估计你有DataReader操作。在里面加个参加CommandBehavior.Close 具体单词记不到。我以前也碰到这问题。加上就好了。