首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

在jsp中向oracle安插一行数据

2013-07-01 
在jsp中向oracle插入一行数据%@page contentTypetext/htmlcharsetgbk%%@page importjava.sql.*

在jsp中向oracle插入一行数据
<%@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. JSP Oracle 数据库
[解决办法]

 
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) +")";

热点排行