【发布时间】:2017-04-24 09:25:41
【问题描述】:
我正在尝试通过 JSP 页面和 servlet 将数据插入数据库。我必须存储这样的时间戳值:“2016-FEB-12 10:45:22”。当我尝试将数据输入数据库时,出现以下错误:“oracle.net.ns.NetException: Size Data Unit (SDU) mismatch”。
这是我的 JSP 页面:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Bid Form</title>
</head>
<body style="background:color=LightGreen">
<form action="BidInsert" method="post">
<table border=1 align="center">
<tr>
<th>Bid Number</th>
<td><input type="text" name="bid_no"></td>
</tr>
<tr>
<th>Amount</th>
<td><input type="text" name="amount"></td>
</tr>
<tr>
<th>User Id</th>
<td><input type="text" name="u_id"></td>
</tr>
<tr>
<th>Listing Id</th>
<td><input type="text" name="l_id"></td>
</tr>
<tr>
<th>Time stamp Info</th>
<td><input type="text" name="timestampinfo" size=50></td>
</tr>
</table>
<center>
<input type="submit" value="submit">
</center>
</form>
</body>
</html>
这是我的 Servlet:
package Serve;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class BidInsert
*/
public class BidInsert extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public BidInsert() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out= response.getWriter();
response.setContentType("text/html");
String bn,a,ui,li, tsi;
bn=request.getParameter("bid_no").toString();
a=request.getParameter("amount").toString();
ui=request.getParameter("u_id").toString();
li=request.getParameter("l_id").toString();
tsi=request.getParameter("timestampinfo");
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection c=DriverManager.getConnection("jdbc:oracle:thin:@apollo.vse.gmu.edu:1521:ite10g","","");
String sql="insert into Bid values('"+bn+"','"+a+"','"+ui+"','"+li+"','"+tsi+"')";
PreparedStatement ps=c.prepareStatement(sql);
ps.executeUpdate(sql);
out.println("Data Inserted successfully");
} catch (SQLException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(out.checkError()==false)
{
out.println(" <input type=\"button\" value=\"Check Database\" onClick=\"window.location.href('Database contents.jsp')\"> ");
}
}
}
我故意省略了数据库的用户名和密码。是否有任何特定的数据类型可用于获取时间戳值?如果有,请提出建议。任何帮助将不胜感激。
【问题讨论】:
标签: java database jsp servlets jdbc