Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: Java JDBC Oracle JSP
The datafile which we need to upload to tables in our project, is an external ".CSV" file which has text in the following format (This is just 1/20 th part of it..the remaining has more sets as these, nearly 20 sets of such data with different values)
@110519120031<m02m00-0315>160xxxxxxxxxxxx
@110519120032<m02m02-0315>204xxxxxxxxxxxx
@110519120033<m02m04-0315>155xxxxxxxxxxxx

As you can see, this needs pattern matching.. Hence we used JSP's with String Tokenizers and JDBC for uploading the values..
Specifications of our system are :
Apache Tomcat 5.0
Oracle 10g XE
and JDK 1.6.0_02
For which we could not find a suitable SQL developer hence we used PL/SQL commands instead..

The upload form we used contained a basic BROWSE button that redirected to the following JSP when a file was selected
 
<%@ page import="javax.servlet.http.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="java.util.*" %>
<%@ page import="java.util.StringTokenizer" %>
<%@ page import="javax.servlet.ServletException" %>
<%@ page import="javax.servlet.http.HttpServlet" %>
<%@ page import="javax.servlet.http.HttpServletRequest" %>
<%@ page import="javax.servlet.http.HttpServletResponse" %>
 
<% int i,p=0,q=0,a,b,c,d,e,f,n=0,k=0,l=0;
String r,code;
String avi;
String str1;
String str2;
String str3;
String name=request.getParameter("datafile");
 
String data[]=new String[4000];
String data1[]=new String[4000];
String data2[]=new String[4000];
out.println(name);
FileInputStream in = new FileInputStream(name);
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","mblm","1321213");
conn.setAutoCommit( false );
Statement stmt=con.createStatement();
BufferedReader br = new BufferedReader(new InputStreamReader(in,"UTF-8"));
String strLine;
while ((strLine = br.readLine())!= null) 
 {
 
if(strLine.startsWith("@"))
{
a=strLine.indexOf("=");
b=strLine.indexOf(">");
c=strLine.indexOf("<");
d=strLine.indexOf("-");
 
code=strLine.substring(c+1,d);
 
if(code.equals("M02m00"))                                                                      // for air temp level1
    {
 
<pre>
    if(!(a&lt;0))
    {

i=0;
String line=strLine.substring(a+1,b);
StringTokenizer st = new StringTokenizer(line,"=,>");
while(st.hasMoreTokens())
{
 
            data1[i]=st.nextToken();
 
            i++;
 
        } 
    }
}

if(code.equals("M02m02")) // airtemp level 2
{
 
if(!(a&lt;0))
    {
    i=0;
    String line=strLine.substring(a+1,b);
    StringTokenizer st = new StringTokenizer(line,"=,&gt;");
    while(st.hasMoreTokens())
        { 
            data[i]=st.nextToken();
            i++;
 
        } 
    }
}

if(code.equals("M02m04")) // for airtemp level3
{
 
if(!(a&lt;0))
    {
    i=0;
    String line=strLine.substring(a+1,b);
    StringTokenizer st = new StringTokenizer(line,"=,&gt;");
    while(st.hasMoreTokens())
        {
            avi=st.nextToken();
            data2[i]=st.nextToken();
 
            i++;
            n++;

}
 
    }
}

out.println(n);

}

while(k<n)
{
str1=data1[k];
str2=data[k];
str3=data2[k];
out.println(str1);
ResultSet Rs1=stmt.executeQuery(" Insert /*+ APPEND_VALUES */ into AIRTEMP(LEVEL1,LEVEL2,LEVEL3) values('"+str1+"','"+str2+"','"+str3+"')");
k++;

}
}

%>

The difficulty we have is that this code cannot upload more than 500 records into the table and that too it doesnt upload properly Plz help

[edit]SHOUTING removed, < and > HTML encoded, spurious closing tags removed - OriginalGriff[/edit]
Posted 8-Mar-12 7:29am
Edited 8-Mar-12 7:35am
v2
Comments
OriginalGriff at 8-Mar-12 12:35pm
   
DON'T SHOUT. Using all capitals is considered shouting on the internet, and rude (using all lower case is considered childish). Use proper capitalisation if you want to be taken seriously.

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

I can see identical code parts in there. Also - isn't there a more elegant way to do this? Looks a bit "fixed".

The code is not responsible for the 500 record limit. Must be ether your database or you might have a false record on pos. 501.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 490
1 Sergey Alexandrovich Kryukov 395
2 Maciej Los 285
3 ProgramFOX 265
4 CHill60 200
0 OriginalGriff 490
1 Sergey Alexandrovich Kryukov 395
2 Maciej Los 285
3 ProgramFOX 265
4 CHill60 200


Advertise | Privacy | Mobile
Web01 | 2.8.150331.1 | Last Updated 9 Mar 2012
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100