代码如下
public Object execProterozoicSql(final String sql) {
return getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return session.connection().createStatement().executeQuery(sql);
}
}, true);
}
我的目的是执行普通的sql语句但是当我调用这个函数的返回对象ResultSet的时候它提示我
java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ResultSet.checkClosed(ResultSet.java:644)
at com.mysql.jdbc.ResultSet.next(ResultSet.java:6674)
at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:168)
at tmh.tvs.bussines.Login.log(Login.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
at javax.faces.component.UICommand.broadcast(UICommand.java:106)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
at org.apache.myfaces.webapp.MyFacesServlet.service(MyFacesServlet.java:74)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
调用代码如下
ResultSet result=(ResultSet)dm.execProterozoicSql("Select * from systemgn");
try {
while(result.next()){
result.getString("gname");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
分享到:
相关推荐
Hibernate是一个对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL语句。通过Hibernate,开发者可以将数据库操作与业务逻辑分离,提高代码的可维护性和可复用性。 Spring与...
Spring MVC通过DispatcherServlet、Controller、Model-View-Controller模式以及一系列的回调方法来组织和管理业务逻辑。 接着,Hibernate是一个强大的对象关系映射(ORM)框架,它可以将数据库中的表与Java类映射,...
Hibernate5引入了新的特性,如实体生命周期回调、多租户支持、更好的JPA兼容性等,提高了开发效率和数据库操作的灵活性。 Spring Security4.2是Spring框架的安全模块,它提供了全面的身份验证、授权和安全控制功能...
4. **Bean管理**:Spring容器负责创建、初始化和管理Bean,支持各种生命周期回调方法。 5. **数据访问支持**:Spring整合了多种数据访问技术,包括JDBC、Hibernate、MyBatis等,简化数据库操作。 **整合Struts2、...
- **HibernateCallback**:定义了一个回调接口,允许在事务内部执行自定义的Hibernate操作。 通过使用HibernateTemplate,开发者可以专注于业务逻辑,而无需关注底层的SessionFactory和Session管理。 总结来说,...
11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新数据库 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. SmartDataSource接口 11.3.3. AbstractDataSource类 11.3.4. SingleConnectionDataSource类 ...
4. 容器:管理Bean的生命周期和依赖关系,提供初始化、销毁等回调方法。 5. 多种数据源支持:不仅限于JDBC,还可以集成其他ORM框架如Hibernate。 6. 集成其他框架:SpringMVC和MyBatis等,构建完整的应用解决方案。 ...
物理分页是直接在SQL语句中添加LIMIT或OFFSET等关键字,利用数据库自身的分页功能,减少了数据处理的量,提高了查询速度。Hibernate框架就采用了这种策略,其分页效率相对较高。 针对iBatis的这一局限,我们可以...
11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新数据库 11.2.9. 获取自动生成的主键 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. SmartDataSource接口 11.3.3. AbstractDataSource类 ...
例如,使用JdbcTemplate时,我们可以简单地调用`update()`或`query()`方法,并提供SQL语句和回调函数来处理结果,其他的通用部分已经由模板方法处理。 此外,Spring还提供了其他数据访问模板,如HibernateTemplate...
3. **实体生命周期管理**:Hibernate 支持实体的生命周期管理,包括瞬态、持久态、托管态和游离态四种状态,提供了丰富的回调方法,便于开发者进行业务逻辑处理。 4. **注解驱动的配置**:此版本鼓励使用注解来代替...
- **生命周期事件**:允许在实体状态改变时触发回调方法。 - **事务管理**:与实体操作相关的事务控制。 ### Hibernate Hibernate 是一个流行的开源 ORM 框架,也是 JPA 的实现之一。它可以作为 JPA 提供者,意味...
Hibernate作为Java领域中的重要工具,极大地简化了数据库应用的开发,通过它,开发者可以将Java对象与数据库表之间的映射关系进行抽象,从而避免直接编写SQL语句,提高开发效率。 本指南的核心内容可能包括以下几个...
7. **实体生命周期**:Hibernate 提供了预加载、加载、持久化、更新、删除、脱管等状态以及相应的回调方法。 通过这个基础教程,你可以了解 Hibernate 框架的基本用法,但要成为 Hibernate 高手,还需要深入学习其...
11. **实体生命周期**:Hibernate定义了几个生命周期回调方法,如`@PrePersist`、`@PostLoad`等,开发者可以在这些方法中添加自己的业务逻辑。 总的来说,Hibernate 3.2作为SSH框架的一部分,它的出现简化了Java ...
例如,在Spring中,`JdbcTemplate`提供了一种简单的方式来执行SQL语句,无需手动管理数据库连接和Statement对象。以下是一个简单的`JdbcTemplate`的使用示例: ```java public class StudentDaoJdbc implements ...
HibernateTemplate支持`HibernateCallback`接口,允许在回调方法中执行自定义的Hibernate操作。这提供了一种方式在事务内部执行复杂操作,例如批量处理或自定义查询。开发者可以在实现`doInHibernate(Session ...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
- 封装了JDBC的核心API,如获取连接、创建语句、执行SQL等,大大简化了开发人员的工作量。 - 自动处理资源的释放及异常的转换。 - 提供了丰富的查询方法,如`query`、`update`等,以及多种回调函数,如`...