Sql server 2008 JSP:mssqlserver2008插入查询
我想在数据库中插入一些会话数据。我有一个名为Sql server 2008 JSP:mssqlserver2008插入查询,sql-server-2008,jsp,insert,Sql Server 2008,Jsp,Insert,我想在数据库中插入一些会话数据。我有一个名为SESSIONINFO的表,它有三列,即SESSIONID(text)、USERID(text)、LASTACCESSTIME(smalldatetime)。但当我试图在数据库中插入值时,它返回Jasper异常 我正在使用的JSP: <html> <head><title>Enter to database</title></head> <body> <table> &
SESSIONINFO
的表,它有三列,即SESSIONID(text)、USERID(text)、LASTACCESSTIME(smalldatetime)
。但当我试图在数据库中插入值时,它返回Jasper异常
我正在使用的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>
我的select查询以这种方式工作很好,但是INSERT
查询语法似乎有问题
请建议。谢谢你的帮助 如果我错了,请原谅,但是在您的输出行之间,您的一个变量中似乎有一个“/”符号?它似乎在INSERT语句中放入/(也可能加引号),而不是您想要的实际值 我已经看得更远了,我在上面的正确轨道上,但我认为它是一个缺失的连接符号,而不是可变的。您似乎在末尾缺少一个+
"+lastAccessTime"')";
应该是
"+lastAccessTime+"')";
您必须在lastAccessTime之后添加+
String sql = "insert into SESSIONINFO (SESSIONID, USERID, LASTACCESSTIME) values ('"+sessionID+"', '"+userName+"', '"+lastAccessTime + "')";
顺便说一下,它仍然不起作用,因为您不能将日期对象连接到查询中。改用PreparedStatement。您可以查看PreparedStatement的示例用法。试试这个
String sql = "insert into SESSIONINFO (SESSIONID, USERID, LASTACCESSTIME) values (' " +sessionID + " ', ' " + userName + " ',' " + lastAccessTime+"')"
你的建议似乎很有道理;但是如果我使用预先准备好的语句逻辑
pstatement.setDate(3,lastAccessTime)
其中pstatement
是一个PS对象,m获取类型PreparedStatement中的方法setDate(int,Date)不适用于参数(int,Date)
jay-它起作用了。通过导入java.sql.Date而不是java.util.Date,避免了上述错误。谢谢你,伙计!!
String sql = "insert into SESSIONINFO (SESSIONID, USERID, LASTACCESSTIME) values (' " +sessionID + " ', ' " + userName + " ',' " + lastAccessTime+"')"