EJB3.0在取得数据源之后,第二次操作数据时 java.sql.SQLException: The statement is closed
EJB3.0在取得数据源之后,如果执行完插入数据操作后,总是提示,让我自己关闭连接,
代码改了之后,第一次执行没问题,第二次在插入数据时,提示,java.sql.SQLException: The statement is closed异常,sql语句没问题
就一个WEB工程里面的一个简单的页面传参,
我的代码看了没看出什么问题
private EntityManager entityManager;
@Resource(mappedName = "OracleDS")
private DataSource ds;
private Statement sta;
private ResultSet set;
private Connection con;
private String sql;
public void getStatement(){
if(sta==null||con==null){
try {
con=ds.getConnection();
sta=con.createStatement();
} catch (SQLException e) {
System.out.println("取得连接异常");
e.printStackTrace();
}
}
}
public void close() throws SQLException{
if(set!=null){
set.close();
set=null;
}
if(sta!=null){
sta.close();
set=null;
}
if(con!=null){
con.close();
set=null;
}
}
下面是保存数据操作
public void save(String TableName,String pFieldList,String pValueList) throws SQLException {
try {
sql="insert into "+TableName+"("+pFieldList+")values("+pValueList+")";
getStatement();
sta.executeUpdate(sql);
} catch (RuntimeException re) {
throw re;
}finally{
close();
}
}
如果,是用JAVA工程就没这么多提示,就运行一次直接通过。但是必顺不能加close那方法,要不一次也执行不了就提示The statement is closed.异常,我都感觉很奇怪
代码改了之后,第一次执行没问题,第二次在插入数据时,提示,java.sql.SQLException: The statement is closed异常,sql语句没问题
就一个WEB工程里面的一个简单的页面传参,
我的代码看了没看出什么问题
private EntityManager entityManager;
@Resource(mappedName = "OracleDS")
private DataSource ds;
private Statement sta;
private ResultSet set;
private Connection con;
private String sql;
public void getStatement(){
if(sta==null||con==null){
try {
con=ds.getConnection();
sta=con.createStatement();
} catch (SQLException e) {
System.out.println("取得连接异常");
e.printStackTrace();
}
}
}
public void close() throws SQLException{
if(set!=null){
set.close();
set=null;
}
if(sta!=null){
sta.close();
set=null;
}
if(con!=null){
con.close();
set=null;
}
}
下面是保存数据操作
public void save(String TableName,String pFieldList,String pValueList) throws SQLException {
try {
sql="insert into "+TableName+"("+pFieldList+")values("+pValueList+")";
getStatement();
sta.executeUpdate(sql);
} catch (RuntimeException re) {
throw re;
}finally{
close();
}
}
如果,是用JAVA工程就没这么多提示,就运行一次直接通过。但是必顺不能加close那方法,要不一次也执行不了就提示The statement is closed.异常,我都感觉很奇怪
...全文
相关推荐
EJB连接Oracle数据库
**错误处理**:在处理数据库连接时,务必处理可能抛出的SQLException和其他异常,确保程序的健壮性。9. **安全性**:确保数据库连接的用户名和密码被安全地存储和传递,避免硬编码在代码中。
ejb之实体Bean与cloudscape数据库事务处理代码
数据源配置:在应用服务器中配置Cloudscape的数据源,这允许Bean通过JNDI查找服务来获取数据库连接。2. 连接管理:实体Bean不应直接创建和关闭数据库连接。
BMP学习EJBBMP学习EJB
这包括连接数据库、创建Statement或PreparedStatement、执行SQL语句、处理结果集等。3. **事务管理**:在BMP中,开发者需要手动开启和提交事务。
JavaEE5学习笔记07-Web层与EJB集成总结
**实体Bean(Entity Beans)**:用于持久化数据,代表数据库中的行或记录。3.
SQL server 2000 java 驱动
连接建立后,你可以使用Statement或PreparedStatement对象执行SQL查询和操作。


