从 jsp/servlet 将日期添加到 mysql 数据库时出错
Error adding date into mysql database from jsp/servlet
我的数据库中有一个 'time' 列。我正在从 jsp 上的表格中获取要添加的值。带有时间的元素是下拉菜单。
添加查询运行正常,但对于每个下拉选择,数据库中的值显示为“00:00:02”。
JSP:
Name: <input type="text" name="name">
Select your appointment: <select name="time">
<option value="1">08:30:00</option>
<option value="2">09:15:00</option>
<option value="3">12:30:00</option>
<option value="4">03:20:00</option>
<option value="5">05:40:00</option>
</select>
Servlet:
String time = request.getParameter("time");
String addQuery = "insert into booking (name, time) values (?, ?)";
pstmt = connection.prepareStatement(addQuery);
pstmt.setString(1, name);
pstmt.setString(2, time);
pstmt.execute();
TestUser 00:00:02 <---- 这是数据库中的输出。
控制台正在为 Servlet 显示 "The character encoding of the plain text document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the file needs to be declared in the transfer protocol or file needs to use a byte order mark as an encoding signature."。
根据你在jsp中的编码,传递的值不是时间而是1/2/3/4
而不是这样做:
Select your appointment: <select name="time">
<option value="1">08:30:00</option>
<option value="2">09:15:00</option>
<option value="3">12:30:00</option>
<option value="4">03:20:00</option>
<option value="5">05:40:00</option>
</select>
尝试这样做:
Select your appointment: <select name="time">
<option value="08:30:00">08:30:00</option>
<option value="09:15:00">09:15:00</option>
<option value="12:30:00">12:30:00</option>
<option value="03:20:00">03:20:00</option>
<option value="05:40:00">05:40:00</option>
</select>
另外,你在db中的列类型是varchar还是time?
已更新
在您的 servlet 中,
String time = request.getParameter("time");
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
Date date;
Time t;
try{
date = dateFormat.parse(time);
t = new java.sql.Time(date.getTime());
}
catch(Exception e){e.printStackTrace();}
String addQuery = "insert into booking (name, time) values (?, ?)";
pstmt = connection.prepareStatement(addQuery);
pstmt.setString(1, name);
pstmt.setTime(2, t);
pstmt.execute();
我的数据库中有一个 'time' 列。我正在从 jsp 上的表格中获取要添加的值。带有时间的元素是下拉菜单。
添加查询运行正常,但对于每个下拉选择,数据库中的值显示为“00:00:02”。
JSP:
Name: <input type="text" name="name">
Select your appointment: <select name="time">
<option value="1">08:30:00</option>
<option value="2">09:15:00</option>
<option value="3">12:30:00</option>
<option value="4">03:20:00</option>
<option value="5">05:40:00</option>
</select>
Servlet:
String time = request.getParameter("time");
String addQuery = "insert into booking (name, time) values (?, ?)";
pstmt = connection.prepareStatement(addQuery);
pstmt.setString(1, name);
pstmt.setString(2, time);
pstmt.execute();
TestUser 00:00:02 <---- 这是数据库中的输出。
控制台正在为 Servlet 显示 "The character encoding of the plain text document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the file needs to be declared in the transfer protocol or file needs to use a byte order mark as an encoding signature."。
根据你在jsp中的编码,传递的值不是时间而是1/2/3/4
而不是这样做:
Select your appointment: <select name="time">
<option value="1">08:30:00</option>
<option value="2">09:15:00</option>
<option value="3">12:30:00</option>
<option value="4">03:20:00</option>
<option value="5">05:40:00</option>
</select>
尝试这样做:
Select your appointment: <select name="time">
<option value="08:30:00">08:30:00</option>
<option value="09:15:00">09:15:00</option>
<option value="12:30:00">12:30:00</option>
<option value="03:20:00">03:20:00</option>
<option value="05:40:00">05:40:00</option>
</select>
另外,你在db中的列类型是varchar还是time?
已更新
在您的 servlet 中,
String time = request.getParameter("time");
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
Date date;
Time t;
try{
date = dateFormat.parse(time);
t = new java.sql.Time(date.getTime());
}
catch(Exception e){e.printStackTrace();}
String addQuery = "insert into booking (name, time) values (?, ?)";
pstmt = connection.prepareStatement(addQuery);
pstmt.setString(1, name);
pstmt.setTime(2, t);
pstmt.execute();