일부 세션 데이터를 데이터베이스에 삽입하려고합니다. 나는 하나의 테이블 SESSIONINFO
을 가지고 있는데이 테이블에는 세 개의 컬럼, 즉 SESSIONID (text), USERID(text), LASTACCESSTIME(smalldatetime)
이있다. 그러나 데이터베이스에 값을 삽입하려고하면 Jasper 예외가 반환됩니다. 내가 사용하고JSP : MS SQL Server 2008 쿼리 삽입
JSP :
<html>
<head><title>Enter to database</title></head>
<body>
<table>
<%@ page import="java.util.*" %>
<%@ page import="javax.sql.*;" %>
<%
java.sql.Connection con;
java.sql.Statement s;
java.sql.ResultSet rs;
java.sql.PreparedStatement pst;
con=null;
s=null;
pst=null;
rs=null;
Date lastAccessTime = new Date(session.getLastAccessedTime());
//lastAccessTime = String("lastAccessTime");
String sessionID = session.getId();
String userName ="anni";
// Remember to change the next line with your own environment
String url=
"jdbc:jtds:sqlserver://localhost/someDB";
String id= "testuser";
String pass = "testpasswd";
try{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con = java.sql.DriverManager.getConnection(url, id, pass);
}catch(ClassNotFoundException cnfex){
cnfex.printStackTrace();
}
String sql = "insert into SESSIONINFO (SESSIONID, USERID, LASTACCESSTIME) values ('"+sessionID+"', '"+userName+"', '"+lastAccessTime"')";
try{
s = con.createStatement();
rs = s.executeQuery(sql);
}
catch(Exception e){e.printStackTrace();}
finally{
if(rs!=null) rs.close();
if(s!=null) s.close();
if(con!=null) con.close();
}
%>
</body>
</html>
오류 -
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 38 in the jsp file: /pages/insertsql.jsp
Syntax error on token ""\')"", delete this token
35: cnfex.printStackTrace();
36: }
37:
38: String sql = "insert into SESSIONINFO (SESSIONID, USERID, LASTACCESSTIME) values ('"+sessionID+"', '"+userName+"', '"+lastAccessTime"')";
39: try{
40: s = con.createStatement();
41: rs = s.executeQuery(sql);
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:328)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:307)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
내 선택 쿼리는 미세 이런 식으로 작동하지만 INSERT
쿼리 구문에 문제가있는 것 같다.
친절히 제안합니다. 모든 도움에 감사드립니다 !!
귀하의 제안은 매우 유효한 것 같다보십시오; 하지만 PreparedStatement 로직'pstatement.setDate (3, lastAccessTime);''pstatement'가 PS 객체 인 경우,'PreparedStatement 타입의 메소드 setDate (int, Date)는 인수에 적용 할 수 없습니다 (int , Date)' – anujin
제이 - 일했습니다. java.util.Date 대신 java.sql.Date를 가져 와서 위의 오류가 발생했습니다. 고마워 친구 !! – anujin