[英]How to get date from html form to servlet
I have an HTML form where I have a date and a time picker. 我有一个HTML表单,我有一个日期和时间选择器。 What I am trying to do is get the date and time by request.getParameter
in servlet, then insert it into my database. 我想要做的是通过servlet中的request.getParameter
获取日期和时间,然后将其插入到我的数据库中。 How can I get that date and time in date and time format or get them as a string then parse them. 如何以日期和时间格式获取日期和时间,或者将它们作为字符串然后解析它们。
Code: 码:
String[] quantity = request.getParameterValues("Quantity_field");
java.util.Date selectedDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("deliveryDate")); //using this one i am trying to get date but it is showing error
java.util.Date selectedTime = new SimpleDateFormat("hh:mm:ss").parse(request.getParameter("deliveryTime"));
System.out.println(selectedDate);
java.util.Date dateUtil = new Date();
java.sql.Date dateSql = new java.sql.Date(dateUtil.getTime());
java.sql.Timestamp timestamp = new Timestamp(dateUtil.getTime());
try {
con = DBConnection.createConnection();
statement = con.createStatement();
String query = " insert query VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = con.prepareStatement(query);
for (int i = 0; i < quantity.length; i++) {
if (Double.parseDouble(quantity[i]) != 0) {
if(recorderNo!=0)
{
ps.setInt(1, recorderNo);
}
else
{
ps.setInt(1, 1);
}
ps.setDate(2, dateSql);
ps.setString(3, 77);
ps.setDouble(4, 55);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.setDouble(7, Double.parseDouble(quantity[i]));
ps.setInt(8, 0);
ps.setInt(9, 0);
ps.setInt(10, 0);
ps.setString(11, outlet);
ps.setTimestamp(12, timestamp);
ps.setDate(13,selectedDate); // here i am trying to put date
ps.setTime(14,selectedTime);// and here time
ps.addBatch();
}
}
ps.executeBatch();
I found this on Google to get date and time but its throwing error at: 我在谷歌上发现了这个以获取日期和时间,但它在以下情况下抛出错误:
ps.setDate(13,selectedDate);
ps.setTime(14,selectedTime);
The error is: 错误是:
The method setDate(int, java.sql.Date) in the type PreparedStatement is not applicable for the arguments (int, java.util.Date) PreparedStatement类型中的方法setDate(int,java.sql.Date)不适用于参数(int,java.util.Date)
Edit 编辑
i am doing like this 我这样做
java.util.Date selectedDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("deliveryDate"));
java.util.Date selectedTime = new SimpleDateFormat("hh:mm:ss").parse(request.getParameter("deliveryTime"));
java.sql.Date dateSelected = new java.sql.Date(selectedDate.getTime());
java.sql.Time dateTime=new Time(selectedTime.getTime());
but the above lines are throwing error, i think i am missing something or writing something wrong 但上面的行是投掷错误,我想我错过了什么或写错了
You have two different Date objects (util.Date and sql.Date), so you need to convert from util.Date to sql.Date to use setDate method. 您有两个不同的Date对象(util.Date和sql.Date),因此您需要从util.Date转换为sql.Date以使用setDate方法。
Your java.util.Date selectedDate
is of java.util.Date
type while PreparedStatement's setDate(int, java.sql.Date)
method requires a java.sql.Date
type. 您的java.util.Date selectedDate
是java.util.Date
类型,而PreparedStatement的setDate(int, java.sql.Date)
方法需要java.sql.Date
类型。 So convert your java.util.Date
into java.sql.Date
所以将java.util.Date
转换为java.sql.Date
You can add this lines: 您可以添加以下行:
java.util.Date selectedDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("deliveryDate"));
java.util.Date selectedTime = new SimpleDateFormat("hh:mm:ss").parse(request.getParameter("deliveryTime"));
// Add the lines below
java.sql.Date selectedSQLDate = new java.sql.Date(selectedDate.getTime());
java.sql.Time selectedSQLTime = new java.sql.Time(selectedTime.getTime());
So your code will be: 所以你的代码将是:
// Other codes
try {
String[] quantity = request.getParameterValues("Quantity_field");
java.util.Date selectedDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("deliveryDate"));
java.util.Date selectedTime = new SimpleDateFormat("hh:mm:ss").parse(request.getParameter("deliveryTime"));
// Add the lines below
java.sql.Date selectedSQLDate = new java.sql.Date(selectedDate.getTime());
java.sql.Time selectedSQLTime = new java.sql.Time(selectedTime.getTime());
con = DBConnection.createConnection();
statement = con.createStatement();
String query = " insert query VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = con.prepareStatement(query);
for (int i = 0; i < quantity.length; i++) {
if (Double.parseDouble(quantity[i]) != 0) {
if(recorderNo!=0)
{
ps.setInt(1, recorderNo);
}
else
{
ps.setInt(1, 1);
}
ps.setDate(2, dateSql);
ps.setString(3, 77);
ps.setDouble(4, 55);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.setDouble(7, Double.parseDouble(quantity[i]));
ps.setInt(8, 0);
ps.setInt(9, 0);
ps.setInt(10, 0);
ps.setString(11, outlet);
ps.setTimestamp(12, timestamp);
ps.setDate(13,selectedDate); // here i am trying to put date
ps.setTime(14,selectedTime);// and here time
ps.addBatch();
}
}
ps.executeBatch();
// Other codes
} catch (Exception e){
// TODO Auto-generated catch block
}
But I suggest you use java.time
classes instead of legacy java.util.Date
& java.sql.Date
with JDBC 4.2 or later. 但我建议你使用java.time
类而不是旧的java.util.Date
和java.sql.Date
与JDBC 4.2或更高版本。 Refer to this for details. 请参阅此了解详情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.