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