How to Upload a file directly to Oracle database using JSP or Servlets?

Hi

I want to upload a file(csv or excel) to Oracle 10g Database using JSP, here is my code which gives me an error..

Addfile.jsp

<%@ page import="java.sql.*" %>

<HTML>

    <BODY bgcolor="#99CCCC">
        <p>&nbsp;</p>

<br>
        <h2 align="center">Upload File to Oracle Database</h2>
        <form id="form1" enctype="multipart/form-data" action="UploadFile.jsp" method="post">
            <table align="center">

                <tr>
                    <td>Browse File  </td>
                    <td><input align="center" type="file"  name="csvfile" />
                </tr>
            </table>
            <p/>
            <center><input align="center" type="submit" value="Upload File"/></center>
        </form>


    </BODY>
</HTML>

UploadFile.jsp

[code]
<%@ page import="java.sql.*" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="java.util.List" %>
<%@ page import="javax.servlet.ServletException" %>
<%@ page import="javax.servlet.http.HttpServlet" %>
<%@ page import="javax.servlet.http.HttpServletRequest" %>
<%@ page import="javax.servlet.http.HttpServletResponse" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>

<HTML>

    <BODY bgcolor="#99CCCC">
        <p>&nbsp;</p>

<br>

<%
        try {
            // Apache Commons-Fileupload library classes
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload sfu  = new ServletFileUpload(factory);

            if (! ServletFileUpload.isMultipartContent(request)) {
                System.out.println("sorry. No file uploaded");
                return;
            }

            // parse request
            List items = sfu.parseRequest(request);
            FileItem  PartNo = (FileItem) items.get(0);
            String photoid =  PartNo.getString();

            FileItem SerialNo = (FileItem) items.get(1);
            String phototitle = SerialNo.getString();

            // get uploaded file
            FileItem file = (FileItem) items.get(2);

            // Connect to Oracle
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
            con.setAutoCommit(false);

            PreparedStatement ps = con.prepareStatement("insert into InventoryDB_Main(PartNo,SerialNo) values(?,?)");
            ps.setString(1, photoid);
            ps.setString(2, phototitle);
            // size must be converted to int otherwise it results in error
            ps.setBinaryStream(3, file.getInputStream(), (int) file.getSize());
            ps.executeUpdate();
            con.commit();
            con.close();
            out.println("File Uploaded Successfully.");
        }
        catch(Exception ex) {
            out.println( "Error --> " + ex.getMessage());
        }

%>

This is my code which is not working it throws error, index 1, size 1.

Please help me. I want to upload a file to Oracle 10g table directly. Help needed urgently.

Thanks in advance Lissy.

View Answers









Related Tutorials/Questions & Answers:
Advertisements