Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 JSP:mssqlserver2008插入查询_Sql Server 2008_Jsp_Insert - Fatal编程技术网

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