private boolean InsertMmsBcc(List list){
String sqlbcc = "insert into mms_bcc(BCC_ID,BCC_NUMBER,MMS_ID) ";
String sqlcommit = sqlbcc;
boolean bFlag = false;
for(int i=0;i<list.size();i++)
{
String tempStr = "select "+"bcc_id_seq.nextval,"+list.get(i)+","+m_MmsId + " from dual";
sqlcommit+=tempStr;
if(i+1 < list.size())
{
sqlcommit += " union ";
}
}
Connection conn = DBConnectionManager.getInstance().getConnection("sjw");
Statement stmt=null;
try {
stmt = conn.createStatement();
stmt.executeUpdate(sqlcommit);
conn.commit();
bFlag = true;
} catch (SQLException e) {
System.out.println(e.getMessage());
}
catch(Exception e1)
{
}
if(stmt != null)
try {
stmt.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
DBConnectionManager.getInstance().freeConnection("sjw", conn);
return bFlag;
}
我程序就是这样调用的,数据库连接池,我是从网上拷贝的,
DBConnectionManager这个是管理数据类,代码如下回复
String sqlbcc = "insert into mms_bcc(BCC_ID,BCC_NUMBER,MMS_ID) ";
String sqlcommit = sqlbcc;
boolean bFlag = false;
for(int i=0;i<list.size();i++)
{
String tempStr = "select "+"bcc_id_seq.nextval,"+list.get(i)+","+m_MmsId + " from dual";
sqlcommit+=tempStr;
if(i+1 < list.size())
{
sqlcommit += " union ";
}
}
Connection conn = DBConnectionManager.getInstance().getConnection("sjw");
Statement stmt=null;
try {
stmt = conn.createStatement();
stmt.executeUpdate(sqlcommit);
conn.commit();
bFlag = true;
} catch (SQLException e) {
System.out.println(e.getMessage());
}
catch(Exception e1)
{
}
if(stmt != null)
try {
stmt.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
DBConnectionManager.getInstance().freeConnection("sjw", conn);
return bFlag;
}
我程序就是这样调用的,数据库连接池,我是从网上拷贝的,
DBConnectionManager这个是管理数据类,代码如下回复
数据库连接池管理类 是这个页面的代码
使用连接池,Connection关闭并不是物理关闭,只是归还连接池,所以PreparedStatement和ResultSet都被持有,并且实际占用相关的数据库的游标资源,在这种情况下,只要长期运行,往往就会报“游标超出数据库答应的最大值”的错误,导致程序无法正常访问数据库。
使用连接池,Connection关闭并不是物理关闭,只是归还连接池,所以PreparedStatement和ResultSet都被持有,并且实际占用相关的数据库的游标资源,在这种情况下,只要长期运行,往往就会报“游标超出数据库答应的最大值”的错误,导致程序无法正常访问数据库。
try {
stmt = conn.createStatement();
stmt.executeUpdate(sqlcommit);
// 及时关闭
stmt.close();
conn.commit();
bFlag = true;
} catch (SQLException e) {
System.out.println(e.getMessage());
}
另外把InsertMmsBcc加成同步方法试试呢.