Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 插入时出现异常java.lang.IndexOutOfBoundsException:索引:7,大小:7_Oracle_Jsp - Fatal编程技术网

Oracle 插入时出现异常java.lang.IndexOutOfBoundsException:索引:7,大小:7

Oracle 插入时出现异常java.lang.IndexOutOfBoundsException:索引:7,大小:7,oracle,jsp,Oracle,Jsp,我正在创建一个应用程序,用户可以在其中浏览并保存数据库中的excel数据。以前,出于测试目的,我只在excel中使用了一列,工作正常,但现在我尝试在8列中插入数据库中的11列,共有8列在工作表中,但问题是我面临java.lang.IndexOutOfBoundsException:Index:7,大小:7例外 <%@page import="org.apache.commons.fileupload.FileItemStream"%> <%@page import="java

我正在创建一个应用程序,用户可以在其中浏览并保存数据库中的excel数据。以前,出于测试目的,我只在excel中使用了一列,工作正常,但现在我尝试在8列中插入数据库中的11列,共有8列在工作表中,但问题是我面临java.lang.IndexOutOfBoundsException:Index:7,大小:7例外

 <%@page import="org.apache.commons.fileupload.FileItemStream"%>
<%@page import="java.util.List"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="org.omg.PortableServer.Servant"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@page import="java.nio.file.Paths"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
     <%@page import="java.sql.*" %>
    <%@page import ="java.util.Date" %>  
    <%@page import ="java.io.*" %>  
    <%@page import ="java.io.FileNotFoundException" %>  
    <%@page import ="java.io.IOException" %>  
    <%@page import ="java.util.Iterator" %>  
    <%@page import ="java.util.ArrayList" %> 
    <%@page import="org.apache.poi.hssf.usermodel.*" %>
    <%@page import ="org.apache.poi.hssf.usermodel.HSSFCell" %>  
    <%@page import ="org.apache.poi.hssf.usermodel.HSSFRow" %>  
    <%@page import ="org.apache.poi.hssf.usermodel.HSSFSheet" %>  
    <%@page import ="org.apache.poi.hssf.usermodel.HSSFWorkbook" %>  
    <%@page import ="org.apache.poi.poifs.filesystem.POIFSFileSystem" %>
    <%@page import="org.apache.poi.ss.usermodel.Cell" %>
    <%@page import ="org.apache.poi.ss.usermodel.Row"%>
    <%@page import="org.apache.poi.ss.usermodel.Sheet" %>
    <%@page import="org.apache.poi.ss.usermodel.Workbook" %>
    <%@page import="com.oreilly.servlet.MultipartRequest" %>
    <%@page import="org.apache.poi.xssf.usermodel.*"%>
    <%@page import="org.apache.poi.xssf.usermodel.XSSFWorkbook"%>
    <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>


     <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

        <%!
        private String getFileName(Part p){
        String header=p.getHeader("content-disposition");
        String filename = header.substring(header.indexOf("filename=\"")).split("\"")[1];  //getting filename

        return filename;
}


        %>   
  <%


 ArrayList CellArrayListHolder=new ArrayList();
 Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@172.18.114.213:1821:pk","xe","se");
      String contentType = request.getContentType();

if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0))
{
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
while (totalBytesRead < formDataLength) {
byteRead = in.read(dataBytes, totalBytesRead,formDataLength);
totalBytesRead += byteRead;
}
String file = new String(dataBytes);
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
out.println(saveFile);
int lastIndex = contentType.lastIndexOf("=");
String boundary = contentType.substring(lastIndex + 1,contentType.length());
int pos;
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

FileOutputStream fileOut = new FileOutputStream(saveFile);

fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();




%>
<%
 File file1 = new File(saveFile);
FileInputStream file_inut=new FileInputStream(file1);

if(saveFile.indexOf(".")>0)
{
 saveFile=saveFile.substring(0,saveFile.lastIndexOf("."));
}
    String query="Select File_name,to_char(FILE_UPLOAD_DATE,'DD-MON-YYYY') from DYNAMIC_INSERT where File_name='"+saveFile+"'";
    Statement st1=con.createStatement();
    ResultSet rs=st1.executeQuery(query);
    if(rs.next())
    {
          String file_name=rs.getString(1);
          String FILE_UPLOAD_DATE=rs.getString(2);


                       out.println("<script type=\"text/javascript\">");
 out.println("alert('File name " + file_name + " already exists File upload Date is "+FILE_UPLOAD_DATE+"')");
 out.println("location='xlsUpload.html';");
   out.println("</script>");


    }
  else
    { 

XSSFWorkbook workbook=new XSSFWorkbook(file_inut);
Sheet firstsheet=workbook.getSheetAt(0);
Iterator<Row> iterator=firstsheet.iterator();
int count=0;
int search_id=0;    
while(iterator.hasNext())
{
   XSSFRow nextrow=(XSSFRow)iterator.next();
    ArrayList rowarraylist=new ArrayList();
    Iterator<Cell> cellIterator=nextrow.cellIterator();

    while(cellIterator.hasNext())
    {
        XSSFCell cell=(XSSFCell)cellIterator.next();
        rowarraylist.add(cell);
    }
    CellArrayListHolder.add(rowarraylist);
}
       out.println(CellArrayListHolder);
       ArrayList rowarraylist=null;
       PreparedStatement st=con.prepareStatement("insert into DYNAMIC_INSERT values(?,?,?,?,?,?,?,?,?,?,?)");

      st.setString(1, saveFile);
      st.setInt(2, search_id);
        st.setDate(3,new java.sql.Date(System.currentTimeMillis()));
for(int i=0;i<CellArrayListHolder.size()-1;i++)
{
    rowarraylist=(ArrayList)CellArrayListHolder.get(i);

    st.setString(4, rowarraylist.get(0).toString());
    st.setString(5, rowarraylist.get(1).toString());
   st.setString(6, rowarraylist.get(2).toString());
   st.setString(7, rowarraylist.get(3).toString());
   st.setString(8, rowarraylist.get(4).toString());
    st.setString(9, rowarraylist.get(5).toString());
   st.setString(10, rowarraylist.get(6).toString());
  st.setString(11, rowarraylist.get(7).toString());



}
 count=st.executeUpdate();
if(count>0)
{
       out.println("<script type=\"text/javascript\">");
   out.println("alert('File added successfully');");
      out.println("location='xlsUpload.html';");
   out.println("</script>");    
}
    }
}



  %>
    </body>
</html>







 i done some research there i found, for loop we have to do -1 like 
    this for(int i=0;i<CellArrayListHolder.size()-1;i++) but still i'm facing same error when i'm change for loop like for(int i=0;i<CellArrayListHolder.size()-2;i++) then excel header inserted in table not data

JSP页面
= 0))
{
DataInputStream in=新的DataInputStream(request.getInputStream());
int formDataLength=request.getContentLength();
字节数据字节[]=新字节[formDataLength];
int byteRead=0;
int totalBytesRead=0;
while(totalBytesRead
0)
{
saveFile=saveFile.substring(0,saveFile.lastIndexOf(“.”);
}
String query=“选择文件名,从动态插入文件名=”+saveFile+“”,到字符(文件上传日期,'DD-MON-YYYY');
语句st1=con.createStatement();
结果集rs=st1.executeQuery(查询);
如果(rs.next())
{
字符串文件_name=rs.getString(1);
字符串文件\上传\日期=rs.getString(2);
out.println(“”);
out.println(“警报('文件名“+文件名+”已存在文件上载日期为“+文件上载日期+”));
println(“location='xlsUpload.html';”;
out.println(“”);
}
其他的
{ 
XSSF工作簿=新的XSSF工作簿(文件输入);
Sheet firstsheet=工作簿。getSheetAt(0);
迭代器迭代器=firstsheet.Iterator();
整数计数=0;
int search_id=0;
while(iterator.hasNext())
{
XSSFRow nextrow=(XSSFRow)迭代器.next();
ArrayList rowarraylist=新的ArrayList();
迭代器cellIterator=nextrow.cellIterator();
while(cellIterator.hasNext())
{
XSSFCell cell=(XSSFCell)cellIterator.next();
添加(单元格);
}
添加(rowarraylist);
}
out.println(列表持有人);
ArrayList rowarraylist=null;
PreparedStatement st=con.prepareStatement(“插入动态值(?,,,,,,,,,,,,,?)”;
st.setString(1,保存文件);
st.setInt(2,搜索id);
st.setDate(3,新的java.sql.Date(System.currentTimeMillis());
对于(int i=0;i0)
{
out.println(“”);
println(“警报('File added successfully');”;
println(“location='xlsUpload.html';”;
out.println(“”);
}
}
}
%>
我在那里做了一些研究,我发现,对于循环,我们必须做-1

这对于(inti=0;i这里是我得到的解决方案,因为我试图输入null值,所以我面临在表中上传数据的问题

PreparedStatement ps=con.prepareStatement("insert into DYNAMIC_INSERT values(?,?,?,?,?,?,?,?,?,?,?)");

      ps.setString(1, saveFile);
      ps.setInt(2, search_id);
        ps.setDate(3,new java.sql.Date(System.currentTimeMillis()));

for(int i=1;i<CellArrayListHolder.size();i++)
{
    rowarraylist=(ArrayList)CellArrayListHolder.get(i);

    ps.setString(4, (rowarraylist.get(0)).toString());
   ps.setString(5, (rowarraylist.get(1)).toString());
   ps.setString(6, (rowarraylist.get(2)).toString());
    ps.setString(7, (rowarraylist.get(3)).toString());
    ps.setString(8, (rowarraylist.get(4)).toString());
    ps.setString(9, (rowarraylist.get(5)).toString());
    ps.setString(10, (rowarraylist.get(6)).toString());
    ps.setString(11, (rowarraylist.get(7)).toString());
 count=ps.executeUpdate();
}
PreparedStatement ps=con.preparest陈述(“插入动态值(?,,,,,,,,,,,,,,?)”;
ps.setString(1,保存文件);
ps.setInt(2,搜索id);
ps.setDate(3,新的java.sql.Date(System.currentTimeMillis());
对于(int i=1;i