Java 将日期从HTML表单传递到servlet到SQL数据库

Java 将日期从HTML表单传递到servlet到SQL数据库,java,sql,forms,servlets,jdbc,Java,Sql,Forms,Servlets,Jdbc,我在通过servlet从HTML表单获取输入日期(yyyyMMdd)到sql数据库时遇到问题。表单中的日期作为字符串传递给servlet,但我需要将其转换为日期以存储在数据库中 我尝试了许多方法,日期格式化程序等。。一种可能的方法是将其转换为long格式,然后对其进行格式化,但这似乎是一个轻微的错误 如有任何想法,将不胜感激 好的,这包括表单和servlet的代码。我没有提到商业问题 表格: <html> <head> <title>Inputing Epis

我在通过servlet从HTML表单获取输入日期(yyyyMMdd)到sql数据库时遇到问题。表单中的日期作为字符串传递给servlet,但我需要将其转换为日期以存储在数据库中

我尝试了许多方法,日期格式化程序等。。一种可能的方法是将其转换为long格式,然后对其进行格式化,但这似乎是一个轻微的错误

如有任何想法,将不胜感激

好的,这包括表单和servlet的代码。我没有提到商业问题

表格:

<html>
<head>
<title>Inputing Episode Into Sons Of Anarchy Database</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h1>Add Sons Of Anarchy Episode to Database</h1>
<form name="sonsOfAnarchyForm" method="get" action="EnterpriseCWEverything\src\coursework\Servlet2.java">
  <p>Season Number: 
    <input name="seasonNumber" type="text" id="seasonNumber">
  </p>
  <p>Season Episode Number: 
    <input name="seasonEpisodeNumber" type="text" id="seasonEpisodeNumber">
  </p>
  <p>Series Episode Number: 
    <input name="seriesEpisodeNumber" type="text" id="seriesEpisodeNumber">
  </p>
    <p>Episode Title: 
    <input name="title" type="text" id="title">
  </p>
    <p>Written By: 
    <input name="writtenBy" type="text" id="writtenBy">
  </p>
    <p>DirectedBy: 
    <input name="directedBy" type="text" id="directedBy">
  </p>
    <p>Original Air Date (YYYY-MM-DD): 
    <input name="origionalAirDate" type="text" id="origionalAirDate">
  </p>
    <p>Viewing Figures US (Millions): 
    <input name="viewingFigures" type="text" id="viewingFigures">
  </p>  
  <p>
    <input name="addEpisode" type="submit" value="Add Episode">
  </p>
</form>
</body>
</html>

将事件输入无政府之子数据库
将无政府状态事件之子添加到数据库
季号:

第四季第集:

剧集编号:

剧集名称:

作者:

指导人:

原始空运日期(YYYY-MM-DD):

查看数字(百万美元):

Servlet:(抱歉,尝试使用代码样本工具,但出于任何原因,它都不喜欢它。)

套装课程;
导入javax.servlet.*;
导入java.util.Date;
导入javax.servlet.http.*;
导入java.io.*;
导入java.sql.*;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
公共类Servlet2扩展了HttpServlet
{
public void doGet(HttpServletRequest rq,HttpServletResponse rp)抛出ServletException,IOException
{
rp.setContentType(“文本/html”);
PrintWriter out=rp.getWriter();
out.println(“”);
out.println(“插入测试”);
out.println(“”);
尝试
{
ArrayList剧集;
剧集=新的ArrayList();
String url=“jdbc:mysql://localhost:3306/sons_of_anarchy";
String driver=“com.mysql.jdbc.driver”;
Class.forName(驱动程序);
Connection Connection=DriverManager.getConnection(url,“根”,“密码”);
//将字符串转换为日期
//字符串temp1;
//长温;
//temp=Long.parseLong(rq.getParameter(“origionalAirDate”);
//temp1=rq.getParameter(“origionalAirDate”);
//问题代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
SimpleDataFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd”);
Date-Date=formatter.parse(rq.getParameter(“origionalAirDate”);
//SimpleDataFormat格式化程序=新的SimpleDataFormat(“yyyyMMdd”);
//Date-Date=formatter.format(rq.getParameter(“origionalAirDate”);
//设置事件行的新实例
发作温度;
添加(temp=新剧集(Integer.parseInt(rq.getParameter(“季节号”))、Integer.parseInt(rq.getParameter(“季节号”)、Integer.parseInt(rq.getParameter(“seriesEpisodeNumber”)、rq.getParameter(“标题”)、rq.getParameter(“directedBy”)、rq.getParameter(“writenby”)、日期、Float.parseFloat(rq.getParameter(“查看图形”));
PreparedStatement editStatement=connection.prepareStatement(“插入到插曲指南”);
//放入数据库
setInt(1,temp.getSeasonNumber());
editStatement.setInt(2,temp.getSessionalEpisodeNumber());
setInt(3,temp.getSeriesEpisodeNumber());
setString(4,temp.getTitle());
setString(5,temp.getDirectedBy());
setString(6,temp.getWrittenBy());
setDate(7,(java.sql.Date)temp.getOrigionalAirDate());
setFloat(8,temp.getViewingFigures());
editStatement.executeUpdate();
editStatement.close();
connection.close();
//打印新条目
int i=0;
而(i”);
i++;
}
} 
捕获(例外e)
{
out.println(“错误”+e);
}
out.println(“基本插入Servlet”);
out.println(“结果…”);
out.println(“”);
}
}

很抱歉运球时间过长,但在上下文中,这可能更有意义。

您可以使用SimpleDateFormat

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
Date date = formatter.format("20110322");

要将
String
转换为
java.util.Date
,请使用Gursel回答的
SimpleDataFormat

String string = "2011-03-22";
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(string);
要将
java.util.Date
转换为
java.sql.Date
,只需使用其构造函数

preparedStatement.setDate(index, new java.sql.Date(date.getTime()));
由于
SimpleDateFormat
不返回
java.sql.Date

ArrayList片段的实例,因此强制转换将无法工作;
            ArrayList<BuisnessObject> episodes;
        episodes = new ArrayList<BuisnessObject>();
        String url = "jdbc:mysql://localhost:3306/sons_of_anarchy";
        String driver = "com.mysql.jdbc.Driver";
        Class.forName(driver);          
        Connection connection = DriverManager.getConnection(url,"root","password");


        BuisnessObject newEpisode;

        // Takes the date from the form in String and converts it java.util.date which is how the buisness object is written
        java.util.Date date = new SimpleDateFormat("yyyy-MM-dd").parse(rq.getParameter("origionalAirDate")); 

        // Creates an instance of the buisness object
        episodes.add(newEpisode = new BuisnessObject(Integer.parseInt(rq.getParameter("seasonNumber")), Integer.parseInt(rq.getParameter("seasonEpisodeNumber")), Integer.parseInt(rq.getParameter("seriesEpisodeNumber")), rq.getParameter("title"), rq.getParameter("directedBy"), rq.getParameter("writtenBy"), date, Float.parseFloat(rq.getParameter("viewingFigures"))));
        PreparedStatement editStatement = connection.prepareStatement("INSERT into episode_guide VALUES (null,?,?,?,?,?,?,?,?)");

        // Takes date from java.util.date and converts it to java.sql.date
        java.sql.Date mySqlDate = new java.sql.Date(newEpisode.origionalAirDate.getTime());


        editStatement.setInt(1, newEpisode.getSeasonNumber());
        editStatement.setInt(2, newEpisode.getSeasonEpisodeNumber());
        editStatement.setInt(3, newEpisode.getSeriesEpisodeNumber());
        editStatement.setString(4, newEpisode.getTitle());          
        editStatement.setString(5, newEpisode.getDirectedBy());
        editStatement.setString(6, newEpisode.getWrittenBy());
        editStatement.setDate(7, mySqlDate);
        editStatement.setFloat(8, (float) newEpisode.getViewingFigures());

        editStatement.executeUpdate();
        editStatement.close();
        connection.close();
剧集=新的ArrayList(); String url=“jdbc:mysql://localhost:3306/sons_of_anarchy"; String driver=“com.mysql.jdbc.driver”; Class.forName(驱动程序); Connection Connection=DriverManager.getConnection(url,“根”,“密码”); 业务对象新事件; //从字符串形式的表单中获取日期,并将其转换为java.util.date,这就是buisness对象的编写方式 java.util.Date Date=新的SimpleDataFormat(“yyyy-MM-dd”).parse(rq.getParameter(“origionalAirDate”); //创建业务对象的实例
            ArrayList<BuisnessObject> episodes;
        episodes = new ArrayList<BuisnessObject>();
        String url = "jdbc:mysql://localhost:3306/sons_of_anarchy";
        String driver = "com.mysql.jdbc.Driver";
        Class.forName(driver);          
        Connection connection = DriverManager.getConnection(url,"root","password");


        BuisnessObject newEpisode;

        // Takes the date from the form in String and converts it java.util.date which is how the buisness object is written
        java.util.Date date = new SimpleDateFormat("yyyy-MM-dd").parse(rq.getParameter("origionalAirDate")); 

        // Creates an instance of the buisness object
        episodes.add(newEpisode = new BuisnessObject(Integer.parseInt(rq.getParameter("seasonNumber")), Integer.parseInt(rq.getParameter("seasonEpisodeNumber")), Integer.parseInt(rq.getParameter("seriesEpisodeNumber")), rq.getParameter("title"), rq.getParameter("directedBy"), rq.getParameter("writtenBy"), date, Float.parseFloat(rq.getParameter("viewingFigures"))));
        PreparedStatement editStatement = connection.prepareStatement("INSERT into episode_guide VALUES (null,?,?,?,?,?,?,?,?)");

        // Takes date from java.util.date and converts it to java.sql.date
        java.sql.Date mySqlDate = new java.sql.Date(newEpisode.origionalAirDate.getTime());


        editStatement.setInt(1, newEpisode.getSeasonNumber());
        editStatement.setInt(2, newEpisode.getSeasonEpisodeNumber());
        editStatement.setInt(3, newEpisode.getSeriesEpisodeNumber());
        editStatement.setString(4, newEpisode.getTitle());          
        editStatement.setString(5, newEpisode.getDirectedBy());
        editStatement.setString(6, newEpisode.getWrittenBy());
        editStatement.setDate(7, mySqlDate);
        editStatement.setFloat(8, (float) newEpisode.getViewingFigures());

        editStatement.executeUpdate();
        editStatement.close();
        connection.close();
java.util.Date date = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("date"));
System.out.println(date);

java.sql.Date sqlDate = new java.sql.Date(date.getTime());

PreparedStatement st = con  .prepareStatement("insert into emp values(?,?)");

st.setString(2, "AAAAAAA");
st.setDate(1, sqlDate);
st.execute();