求指点一下问题所在

J2EE 码拜 9年前 (2016-03-16) 1360次浏览
这是本人项目里查询数据库方法里其中之一,之前用Oracle数据库时没有异常,

public DocumentImpl selectRecordById(DocumentImpl doc){
		String name=null;
		String val=null;
		NodeList children = doc.getDocumentElement().getChildNodes();
			name=children.item(0).getNodeName();
			val=children.item(0).getTextContent();
		//查询
		Connection con=null; 
		DocumentImpl result=new DocumentImpl();
		Element root = result.createElement("root");
		result.appendChild(root);
		try{
			con=JdbcUtil.getConnection();
			con.setAutoCommit(false);
			String sql="select * from clerk_ledger_xjy where "+name+" = ?";
			//System.out.println(sql);
			PreparedStatement ps = con.prepareStatement(sql);
			ps.setString(1, val);
			con.commit();
			ResultSet rs = ps.executeQuery();
			ResultSetMetaData rsmd = rs.getMetaData();
			int count = rsmd.getColumnCount();
			int row=1;
			while(rs.next()){
			Element rows = result.createElement("row"+row);
			root.appendChild(rows);
			for (int i = 1;i <= count;i++){
				String key = rsmd.getColumnLabel(i).toLowerCase();
				String value = (rs.getString(key)==null?"":rs.getString(key));
				WSDomUtil.appendChildNode(result , rows, key, value);
				//System.out.println(key+":"+value); 
				}
			row++;
			}

		}catch (Exception e) {
			e.printStackTrace();
			try {
				con.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			throw new RuntimeException(
				"查询失败", e);
		} finally {
			JdbcUtil.close(con);
		}

//		try {
//			System.out.println(WSDomUtil.convertXMLDOMToString(result));
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
		return result;
	}

现在换成数据库db2,方法调用的时候老是报错:

com.ibm.db2.jcc.am.SqlException: [jcc][t4][10251][10308][3.57.82] 正在连接上执行事务时,请求了 java.sql.Connection.close()。
事务仍然保持活动状态,不能关闭连接。 ERRORCODE=-4471, SQLSTATE=null
	com.ibm.db2.jcc.am.bd.a(bd.java:660)
	com.ibm.db2.jcc.am.bd.a(bd.java:60)
	com.ibm.db2.jcc.am.bd.a(bd.java:120)
	com.ibm.db2.jcc.am.jb.u(jb.java:1167)
	com.ibm.db2.jcc.am.jb.x(jb.java:1190)
	com.ibm.db2.jcc.am.jb.v(jb.java:1176)
	com.ibm.db2.jcc.am.jb.close(jb.java:1160)
	util.JdbcUtil.close(JdbcUtil.java:41)
	dao.SelectDao.selectById(SelectDao.java:63)
	service.QueryServiceImpl.finduser(QueryServiceImpl.java:18)
	web.QueryController.query(QueryController.java:55)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
	org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
	org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
	org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
	org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

上面已经commit过,事务已经提交 ,下面关闭连接怎么还会出问题 ,求高手指点求指点一下问题所在

解决方案

30

ps.executeQuery();//执行完后
con.commit();

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求指点一下问题所在
喜欢 (0)
[1034331897@qq.com]
分享 (0)