2016-12-09 17 views
0

JSPページとサーブレットを介してデータベースにデータを挿入しようとしています。私はこのようなタイムスタンプ値を格納しなければなりません: "2016-FEB-12 10:45:22"。データベースにデータを入力しようとすると、「oracle.net.ns.NetException:Size Data Unit(SDU)が一致しません」というエラーがスローされています。jspページによるタイムスタンプデータの挿入とサーブレットによる検証

これは私の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>

これは私のサーブレットです:

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 { 
 
\t private static final long serialVersionUID = 1L; 
 
     
 
    /** 
 
    * @see HttpServlet#HttpServlet() 
 
    */ 
 
    public BidInsert() { 
 
     super(); 
 
     // TODO Auto-generated constructor stub 
 
    } 
 
\t /** 
 
\t * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
 
\t */ 
 
\t protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
 
\t \t 
 
\t \t 
 
\t \t PrintWriter out= response.getWriter(); 
 
\t \t response.setContentType("text/html"); 
 
\t \t 
 
\t \t String bn,a,ui,li, tsi; 
 
\t \t bn=request.getParameter("bid_no").toString(); 
 
\t \t a=request.getParameter("amount").toString(); 
 
\t \t ui=request.getParameter("u_id").toString(); 
 
\t \t li=request.getParameter("l_id").toString(); 
 
\t \t tsi=request.getParameter("timestampinfo"); 
 
\t \t 
 
\t \t try { 
 
\t \t \t Class.forName("oracle.jdbc.driver.OracleDriver"); 
 
\t \t Connection c=DriverManager.getConnection("jdbc:oracle:thin:@apollo.vse.gmu.edu:1521:ite10g","",""); 
 
\t \t \t String sql="insert into Bid values('"+bn+"','"+a+"','"+ui+"','"+li+"','"+tsi+"')"; 
 
\t \t \t PreparedStatement ps=c.prepareStatement(sql); 
 
\t \t \t ps.executeUpdate(sql); 
 
\t \t \t out.println("Data Inserted successfully"); 
 
\t \t \t 
 
\t \t } catch (SQLException | ClassNotFoundException e) { 
 
\t \t \t // TODO Auto-generated catch block 
 
\t \t \t e.printStackTrace(); 
 
\t \t } 
 
\t \t if(out.checkError()==false) 
 
\t \t { 
 
\t \t \t out.println(" <input type=\"button\" value=\"Check Database\" onClick=\"window.location.href('Database contents.jsp')\"> "); 
 
\t \t } 
 
\t } 
 

 
}

私は、ユーザー名を省略しましたデータベースのパスワードは意図的にです。タイムスタンプ値を取得するために使用する特定のデータ型はありますか?どんな助けでも大歓迎です。

答えて

0

はじめにPreparedStatement(またはそれに類似したもの)を使用して、SQLインジェクション文字列の作成を避けることを検討してください。これはSQLインジェクション攻撃に開放されています。

あなたはSimpleDateFormatの

を使用してDateStringを変換する必要があるので、time情報は、TIMESTAMPまたはDATEとして挿入されなければならないように第二に、それは見えますがSO https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

検索を参照してください、あなたは数千人を見つけることができます例

+0

あなたの説明のほとんどは意味がありますが、私はあなたが私に何をしたいのかまだ分かりませんが、私はWeb開発の初心者です。いくつかのコード –

+0

検索すると、http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html –

+0

のようなものを見つけることができ、https:// wwwを設定することができます。 mkyong.com/jdbc/how-to-insert-timestamp-value-in-preparedstatement/ –

関連する問題