在A页面上点击超连接 打开一个新的页面B 同时A页面刷新一次 并且 A,B 俩页面都连接数据库 报错:你已经连接至数据库。只有在首先断开了连接的情况下才能建立新的连接。No operations allowed after statement closed.问题是我在其他地方用同样的方法 做了个C页面上点击超链接弹出D页面 C,D俩页面也都同时连数据库 就没有报错, 而A,B俩页面就会报错, 对比很多次也找不出差别。。 连数据库的代码里closed 方法都写了 不知道为什么还要报这个错!
解决方案 »
- 运行出现如下异常
- 构建器内部的多形性方法的行为
- 各位大虾救命呀
- 请问:将.doc文本读出来,用什么语句来实现呀?
- 新人报道,送上N多java高清PDF图书(有图)
- 有关多线程同步的问题
- 有关接口 EventListener的问题~~这个接口中什么都没有定义,为什么好多类都还要继承它呢?~这是为什么?
- 请问在通过socket进行数据传输时,怎样确保或怎样判断接受方已经收到数据?即怎样确保所接收到的数据的可靠性?
- 不明白JComboBox这样做的原因?
- 用JDBC连接数据库问题
- 异常:Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.wsb.pub.Item cannot 怎么解决
- 如何取得ebay 上的数据
是隔离开的 公司的框架有专门写数据库操作的地方 就是不明白为什么会报这种错, 我和同事昨天把A,B页面 与C,D
页面对了一天, 不同的地方都该了 ,CD页面点多少次都不报错 ,AB页面点次数多了就报这个错 ,经常点一次就报错
郁闷ing
确实没有配连接池! 因为这个项目不大 所以产品经理也没让我们配, 我贴下代码把数据库的代码
A,B页面连数据库private static final String SQLSTATEMENT_SELECT_PRODUCT_BY_PRIMARY_KEY = "SELECT "
+ PRODUCT_ID
+ ", "
+ PRODUCT_NAME
+ ","
+ PRODUCT_START
+ ", "
+ PRODUCT_END
+ ", "
+ PRODUCT_PARENT
+ ", "
+ PRODUCT_NOTES
+ " FROM "
+ PRODUCT_TABLE
+ " WHERE "
+ PRODUCT_ID
+ " = ? ";
private StatementMetaData constructMetaDataForSelectProductByPrimaryKey(String sqlStr) throws DataException {
StatementMetaData metaData = new StatementMetaData();
metaData.setSQL(sqlStr);
metaData.addTable(PRODUCT_TABLE);
metaData.addParameter("PRODUCT_ID", String.class, Types.VARCHAR);
return metaData;
}
/**
* <P>Function: findProductByProductId
* <P>Description:
* @author: luxu
* @CreateTime: 2009-1-16 上午11:42:51
* @param: // 输入参数说明,包括每个参数的作用、取值说明及参数间关系。
* @Return: // 函数返回值的说明
*/
public Product findProductByProductId(String id) throws DataException{
DebuggingLog
.printInformation("ProductConnector::findProductByProductId(..) ---------- START");
createConnection();
Product product=new Product();
String sqlStr = SQLSTATEMENT_SELECT_PRODUCT_BY_PRIMARY_KEY;
try {
DebuggingLog
.printInformation("ProductConnector::findProductByProductId(..) --SQL--"
+ sqlStr); StatementMetaData metaData = constructMetaDataForSelectProductByPrimaryKey(
sqlStr);
SelectStatement statement = (SelectStatement) new OnlineSelectStatement(
metaData, getDatabaseConnection());
statement.setParameter(1, id);
executeSelect(statement);
SelectResult result = statement.getResult();
product=processFindProductByProductIdQueryResult(result);
result.close();
statement.close();
}catch (DataException dex) {
throw dex;
} finally {
releaseConnection();
}
DebuggingLog
.printInformation("ProductConnector::findProductByProductId(..) ---------- END");
return product;
}
private Product processFindProductByProductIdQueryResult(SelectResult result) throws DataException {
Product product=new Product();
if(result!=null&&result.getNumRows()>0){
if(result.getColumnValue(PRODUCT_ID)!=null){
String productid=result.getColumnValue(PRODUCT_ID).toString();
product.setProductId(productid);
}
if(result.getColumnValue(PRODUCT_NAME)!=null){
String productName=result.getColumnValue(PRODUCT_NAME).toString();
product.setProductName(productName);
}
if(result.getColumnValue(PRODUCT_START)!=null){
String productStart=result.getColumnValue(PRODUCT_START).toString();
product.setProductStart(productStart);
}
if(result.getColumnValue(PRODUCT_END)!=null){
String productEnd=result.getColumnValue(PRODUCT_END).toString();
product.setProductEnd(productEnd);
}
if(result.getColumnValue(PRODUCT_PARENT)!=null){
String productFloor=result.getColumnValue(PRODUCT_PARENT).toString();
product.setProduct_Parent(productFloor);
}
if(result.getColumnValue(PRODUCT_NOTES)!=null){
String productNotes=result.getColumnValue(PRODUCT_NOTES).toString();
product.setProduct_Notes(productNotes);
}
}
return product;
}下面是报错ProductHome::findProductByProductId(..) ---------- START
2009-02-19 09:29:31.218 - DEBUG(4) {http-8080-Processor22} - ProductConnector::findProductByProductId(..) ---------- START
2009-02-19 09:29:31.218 - DEBUG(4) {http-8080-Processor22} - ProductConnector::findProductByProductId(..) --SQL--SELECT Product_Id, Product_Name,Product_Start, Product_End, Product_parent, Product_Notes FROM PRODUCT WHERE Product_Id = ?
2009-02-19 09:29:31.234 - DEBUG(5) {http-8080-Processor24} - VMSServlet doGet()
2009-02-19 09:29:31.265 - DEBUG(5) {http-8080-Processor24} - VMSServlet doService()----------START
2009-02-19 09:29:31.265 - DEBUG(5) {http-8080-Processor24} - HandlerRegistry: Entered : getRequestHandler() (HttpServletRequest)
2009-02-19 09:29:31.265 - DEBUG(5) {http-8080-Processor24} - HandlerRegistry: Entered : getRequestHandler() - HttpServletRequest
2009-02-19 09:29:31.265 - DEBUG(5) {http-8080-Processor24} - VMSServlet Invoking handler: class com.res.vms.handlers.ProductListHandler
2009-02-19 09:29:31.265 - DEBUG(4) {http-8080-Processor24} - Current Session Id is EC2091EEC8BD3B88A914468CA8DC5DDC
2009-02-19 09:29:31.265 - DEBUG(4) {http-8080-Processor24} - ProductHome::findAllProductInfo(..) ---------- START
2009-02-19 09:29:31.265 - DEBUG(4) {http-8080-Processor24} - ProductConnector::findAllProductInfo(..) ---------- START
2009-02-19 09:29:31.265 - DEBUG(4) {http-8080-Processor24} - ProductConnector::findAllProductInfo(..) --SQL--select Product_Id , Product_Name , Product_Start , Product_End , Product_parent , Product_Notes FROM PRODUCT
你已经连接至数据库。只有在首先断开了连接的情况下才能建立新的连接。
2009-02-19 09:29:31.281 - DEBUG(4) {http-8080-Processor22} - ProductConnector::findProductByProductId(..) ---------- END
2009-02-19 09:29:31.281 - DEBUG(4) {http-8080-Processor22} - ProductHome::findProductByProductId(..) ---------- END
LocaleRenderer::render() - trying to dispatch to: /jsp/ProductListInfo.jsp
2009-02-19 09:29:31.296 - DEBUG(5) {http-8080-Processor22} - Handler: ProductListInfo
2009-02-19 09:29:31.296 - DEBUG(5) {http-8080-Processor22} - Page dispatch path: /VMS?ProductListInfo
对于该语句,没有任何活动的数据库连接。
2009-02-19 09:29:31.296 - DEBUG(5) {http-8080-Processor22} - VMSServlet doService()----------END
C ,D 页面就没有这个报错 很正常