<%@page contentType="text/html;charset=gbk"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*,java.io.*,java.text.*"%>
<%!
 public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver"; public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:sales"; public static final String DBUSER = "scott"; public static final String DBPASS = "tiger";
%><%
 Connection conn = null;//数据库连接
 PreparedStatement pstmt = null;//数据库操作
 ResultSet rs = null;//查询结果集
%><%
  Class.forName(DBDRIVER);//加载数据库
  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
  String empno = request.getParameter("empno");
  String ename = request.getParameter("ename");
  String mgr   = request.getParameter("mgr");
  String job = request.getParameter("job");
  String hiredate = request.getParameter("hiredate");
  
  String sal = request.getParameter("sal");
  String comm = request.getParameter("comm");
  String deptno = request.getParameter("deptno");  String sql = "insert into emp values("+ Integer.parseInt(empno)+",'"+ename+"',"+Integer.parseInt(mgr)+",'"+job+"',"+to_date(hiredate,'yyyy-mm-dd')+","+Float.parseFloat(sal) +","+Float.parseFloat(comm)+","+Integer.parseInt(deptno) +")";
  pstmt = conn.prepareStatement(sql);//将预编译的sql语句存储在pstmt对象中
 int i= pstmt.executeUpdate();
  sql = "select * from emp";
  pstmt = conn.prepareStatement(sql);
  rs = pstmt.executeQuery();%>
<center>
<h1>添加后后的雇员表</h1>
<table border="1" width="80%">
 <tr>
 <td>雇员编号</td>
  <td>雇员姓名</td>
  <td>上级编号</td>
  <td>工作</td>
  <td>雇用日期</td>
  <td>工资</td>
  <td>奖金</td>
  <td>部门号</td>
 </tr>
<%
 while(rs.next()) {
       int empno1 = rs.getInt(1);
   String ename1 = rs.getString(2);
   String job1 = rs.getString(3);
   int mgr1 = rs.getInt(4);
   java.util.Date hiredate1 = rs.getDate(5);
   float sa1l = rs.getFloat(6);
   float comm1 = rs.getFloat(7);
   int deptno1 = rs.getInt(8);
%>
 <tr>
   <td><%=empno1%></td>
   <td><%=ename1%></td>
   <td><%=job1%></td>
   <td><%=mgr1%></td>
   <td><%=hiredate1%></td>
   <td><%=sa1l%></td>
   <td><%=comm1%></td>
   <td><%=deptno1%></td>
  </tr>
  
 <%
  }
 %>
<%
 rs.close();
 pstmt.close();
 conn.close();
%>
</table>
</center>
出错信息
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 33 in the jsp file: /project/add.jsp
Invalid character constant
30:   String comm = request.getParameter("comm");
31:   String deptno = request.getParameter("deptno");
32: 
33:   String sql = "insert into emp values("+ Integer.parseInt(empno)+",'"+ename+"',"+Integer.parseInt(mgr)+",'"+job+"',"+to_date(hiredate,'yyyy-mm-dd')+","+Float.parseFloat(sal) +","+Float.parseFloat(comm)+","+Integer.parseInt(deptno) +")";
34:   pstmt = conn.prepareStatement(sql);//将预编译的sql语句存储在pstmt对象中
35:  int i= pstmt.executeUpdate();
36:   sql = "select * from emp";
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.26 logs.JSPOracle数据库

解决方案 »

  1.   

     
    String sql = "insert into emp values("+ Integer.parseInt(empno)+",'"+ename+"',"+Integer.parseInt(mgr)+",'"+job+"',"+to_date(hiredate,'yyyy-mm-dd')+","+Float.parseFloat(sal) +","+Float.parseFloat(comm)+","+Integer.parseInt(deptno) +")";
    改成下面试试String sql = "insert into emp values("+ Integer.parseInt(empno)+",'"+ename+"',"+Integer.parseInt(mgr)+",'"+job+"',to_date('"
    +hiredate+"','yyyy-mm-dd'),"+Float.parseFloat(sal) +","+Float.parseFloat(comm)+","+Integer.parseInt(deptno) +")";
      

  2.   

    2换了一种错误
    org.apache.jasper.JasperException: An exception occurred processing JSP page /project/add.jsp at line 3633:   String sql = "insert into emp values("+ Integer.parseInt(empno)+",'"+ename+"',"+Integer.parseInt(mgr)+",'"+job+"',to_date('"+hiredate+"','yyyy-mm-dd'),"+Float.parseFloat(sal) +","+Float.parseFloat(comm)+","+Integer.parseInt(deptno) +")";
    34: 
    35:   pstmt = conn.prepareStatement(sql);//将预编译的sql语句存储在pstmt对象中
    36:  int i= pstmt.executeUpdate();
    37:   sql = "select * from emp";
    38:   pstmt = conn.prepareStatement(sql);
    39:   rs = pstmt.executeQuery();
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    root causejavax.servlet.ServletException: java.sql.SQLException: ORA-01722: 无效数字 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:911)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:840)
    org.apache.jsp.project.add_jsp._jspService(add_jsp.java:181)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    root causejava.sql.SQLException: ORA-01722: 无效数字 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
    oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
    oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
    oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:742)
    oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:212)
    oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:951)
    oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1159)
    oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3284)
    oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3367)
    org.apache.jsp.project.add_jsp._jspService(add_jsp.java:103)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.26 logs.[/code]