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