页面有多行数据。每行对应对条。是根据每行里的时间差计算出来的。例如:2010-01-01 到 2010-01-03 这就是3条数据,从1号到3号。
我页面有10行,那么数据最少有10条,也可能更多。
我用JS取出每行的内容,然后循环向后台提交(AJAX),这时后台执行的时候会出现 “关闭连接”的异常。
其实我就是想在开始插入时打开连接, 执行完毕 后提交数据,关闭连接。但总是出现“关闭连接” 这个异常
麻烦有过经验的给个解决办法。谢谢!
我页面有10行,那么数据最少有10条,也可能更多。
我用JS取出每行的内容,然后循环向后台提交(AJAX),这时后台执行的时候会出现 “关闭连接”的异常。
其实我就是想在开始插入时打开连接, 执行完毕 后提交数据,关闭连接。但总是出现“关闭连接” 这个异常
麻烦有过经验的给个解决办法。谢谢!
前面用AJAX的调用的DD暂时可以无视
贴出你的jdbc代码和异常
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
at oracle.jdbc.driver.OracleStatement.ensureOpen(OracleStatement.java:3512)
at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1586)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1570)
at com.gmtoa.struts.sysManagement.holidays.impl.HoliDaysOperImpl.addHolidaysData(HoliDaysOperImpl.java:201)
at com.gmtoa.struts.sysManagement.holidays.action.HoliDaysOperAction.addHolidaysData(HoliDaysOperAction.java:105)
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:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.medi.filter.Filter.doFilter(Filter.java:22)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
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.Http11AprProcessor.process(Http11AprProcessor.java:831)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:652)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1203)
at java.lang.Thread.run(Thread.java:619)
//要返回的字符串
String retStr = "";
//拼接SQL
StringBuffer buff = new StringBuffer();
//获取连接,单例模式
Connection con = SingletonConnection.getConnection();
try {
con.setAutoCommit(false);
//获取Statement,单例模式
Statement stm = SingletonConnection.createStatement(con);
/**
* sendStatus如果是send,则代表数据正在发送.还没有结束.
* 继续添加.
*/
if(sendStatus.equals("send")){ //按","转换为数组
String[] data = days.split(",");
//取得起始时间与结束时间
String begin_date = data[1];
String end_date = data[2];
//取得年
String year = begin_date.substring(0, 4);
//起始时间与结束时间的差
int end_day = DateUtil.getBetweenDayNumber(begin_date,end_date,"yyyy-mm-dd");
//循环添加
for(int i=0;i<=end_day;i++){
//计算从begin_date到i的日期
String day = DateUtil.getNextDay(begin_date,String.valueOf(i)); //追加SQL
buff.append("INSERT INTO holiday_work \n");
buff.append(" (PARA_YEAR, \n");
buff.append(" HOLIDAY_NAME, \n");
buff.append(" HOLIDAY_TYPE, \n");
buff.append(" HOLIDAY_DATE, \n");
buff.append(" WORK_DAY_TYPE, \n");
buff.append(" REMARKS) \n");
buff.append("VALUES \n");
buff.append(" ('"+year+"', \n");
buff.append(" '"+data[0]+"', \n");
buff.append(" '"+data[5]+"', \n");
buff.append(" to_date('"+day+"','yyyy-mm-dd'), \n");
buff.append(" decode('"+data[4]+"','1','+','2','-','3','-'), \n");
buff.append(" '"+data[3]+"') \n");
//打印添加SQL
//System.out.println(buff.toString());
//执行添加操作
int state = 0;
state = stm.executeUpdate(buff.toString());
if(state == 0){
retStr = "no";
break;
}else{
retStr = "ok";
}
System.out.println("state = "+state);
//清空buff对象
buff.delete(0, buff.length());
}
con.commit();
}
如果是spring不需要显示关闭
恩 看不出什么问题
public static Connection getConnection(){
if(conn == null) {
try{
newInstance();
conn = DriverManager.getConnection(CONN_STR,USER_NBAME,PASSWORD);
count_conn++;
}catch(Exception ee){
ee.printStackTrace();
}
}
return conn;
}
public static Statement createStatement(Connection conn){
try{
if(stmt == null){
stmt = conn.createStatement();
count_stmt++;
}
return stmt;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
Connection con = SingletonConnection.getConnection();单例模式???????????????
}
vi /etc/hosts
在“hosts”文件中添加如下信息:
10.137.3.234 BMP11
10.137.3.236 BMP13
10.137.3.231 BMP06
10.137.3.233 BMP10
10.138.3.109 china.ct.com
在231、233、234、236主机上都执行相同步骤步骤 4 在本机上也配置主机信息
C:\WINDOWS\system32\drivers\etc\hosts配置如下信息:
10.137.3.234 BMP11
10.137.3.236 BMP13
10.137.3.231 BMP06
10.137.3.233 BMP10
10.138.3.109 t00141807.china.huawei.com