任何人都可以帮助我使用示例JSP代码通过JDBC将日期存储在MySql数据库中吗? 当我尝试执行下面给出的代码时,我得到以下异常:
com.mysql.jdbc.MysqlDataTruncation:数据截断:日期时间值不正确:第1行的列'日期'''
如何克服这个问题?以下是我的代码:
Connection con = null;
String StaffName = request.getParameter("StaffName");
// String subcode = request.getParameter("subcode");
String hourId = request.getParameter("hourId");
if (hourId == null)
hourId = "";
String day = request.getParameter("day");
if (day == null)
day = "";
String date = request.getParameter("date");
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/StaffAllocation", "root", "success");
// PreparedStatement stat = con.PrepareStatement();
String updateString = "INSERT INTO tblstaffallocation (StaffName,hourId,daysId,date) VALUES (?,?,?,?)";
PreparedStatement preparedStatement = con.prepareStatement(updateString);
preparedStatement.setString(1, StaffName);
preparedStatement.setInt(2, 0);
preparedStatement.setInt(3, 0);
preparedStatement.setString(4, date);
} catch (Exception e) {
out.print(e);
}
答案 0 :(得分:15)
要将日期设置为预准备语句,您需要更改值类型:
String date = request.getParameter("date");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // your template here
java.util.Date dateStr = formatter.parse(date);
java.sql.Date dateDB = new java.sql.Date(dateStr.getTime());
现在将String date转换为java.sql.Date并使用另一种方法:
preparedStatement.setDate(4,dateDB);
答案 1 :(得分:12)
我有类似的错误。事实证明我只需更新mysql-connector-java的jar版本(使用maven)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>...</version>
</dependency>
答案 2 :(得分:3)
尝试重新格式化日期
String date = new SimpleDateFormat("yyyy-MM-dd")
.format(new Date(request.getParameter("date")));
然后插入数据库。 请注意,request.getParameter(“date”)的格式应为11/20/2013,以使其正常工作,或者您可以使用类似的方式来实现。
答案 3 :(得分:0)
如果某人的实体字段出现类似错误且数据类型标注为@Temporal
,则我的解决方案是将注释值TemporalType.TIMESTAMP
替换为TemporalType.TIME
:
@Temporal(TemporalType.TIMESTAMP)
private Date dateField;
应该是这样的:
@Temporal(TemporalType.TIME)
private Date dateField;
在没有任何代码更改(至少对我来说)的情况下解决此问题的另一种方法是在更高的Tomcat版本上运行应用程序,希望它会有所帮助。
答案 4 :(得分:0)
答案 5 :(得分:0)
我知道这是一个旧线程,但这些解决方案都没有解决我的问题。对我有用的是将hibernate升级到版本5.2.10.Final(参见this SO post)。
运行Spring Boot和Spring Data JPA 1.5.4.RELEASE和hibernate 5.2.10.Final。