<%!
String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@172.30.60.87:1521:ORCL";
String user = "system";
String password = "cim";Connection conn;
%><%
if(request.getParameter("Submit")!=null){
File file=new File(getServletContext().getRealPath("mo.txt"));
FileReader reader=new FileReader(file);
char[] cbuf=new char[(int)file.length()];
reader.read(cbuf);
reader.close();
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
Statement st=conn.createStatement();
String[] table=new String(cbuf).split("\n");
String[][] row=new String[table.length][];
int num=0;
for(int i=0;i<table.length;i++){
row[i]=table[i].split(" ");
st.executeUpdate("insert into all_mocsv (MO,CODE,CT,RT) values ('"+row[i][0]+"','"+row[i][1]+"','"+row[i][2]+"','"+row[i][3]+"')");
  }
st.close();
conn.close();
if(num>0)
out.print("<script language=javascript>alert('导入成功')</script>");
}
%><html>
  <head>
    <title>通过文本文件向数据库中传递数据</title>
  </head>
  <body>
  <form name="form1" method="post" action="">
    <table width="300" height="98"  border="0" cellpadding="0" cellspacing="0" background="back.gif">
      <tr><td height="72">&nbsp;</td>
      </tr>
      <tr><td height="25" align="center">
          <input type="submit" name="Submit" value="执行">
      </td></tr></table>
  </form>
  </body>
</html>错误提示:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /index111.jsp at line 3431: int num=0;
32: for(int i=0;i<table.length;i++){
33:  row[i]=table[i].split(" ");
34:  st.executeUpdate("insert into all_mocsv (MO,CODE,CT,RT) values ('"+row[i][0]+"','"+row[i][1]+"','"+row[i][2]+"','"+row[i][3]+"')");
35:   
36: 
37: }
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause javax.servlet.ServletException: java.sql.SQLException: ORA-01858: a non-numeric character was found where a numeric was expected org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.index111_jsp._jspService(index111_jsp.java:126)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.sql.SQLException: ORA-01858: a non-numeric character was found where a numeric was expected oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:946)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1614)
oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1579)
org.apache.jsp.index111_jsp._jspService(index111_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
请各位大大指点一下,谢谢!!!

解决方案 »

  1.   

    34: st.executeUpdate("insert into all_mocsv (MO,CODE,CT,RT) values ('"+row[i][0]+"','"+row[i][1]+"','"+row[i][2]+"','"+row[i][3]+"')"); 这不对,自己查查
      

  2.   


     
    row[i]=table[i].split(" "); //这句错了,打印出来看看,估计是些内存地址吧
      

  3.   

    看错了,你后面用的row[i][1],应该只有row[i][0]有数据,其它的都没有。
      

  4.   

    这就是一个通过TXT逐行插入数据的JSP,请帮忙解答一下,我已经搞了一星期了还没搞定啊
      

  5.   

    你的程序是完全从编辑器copy下来的吗?感觉你的单引号是中文字符,不是英文字符。单步调试看看,看看把SQL语句取出,执行看看