数据截断:不正确的日期时间值:''

新手上路,请多包涵

任何人都可以帮助我提供示例 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);
}

原文由 user2951465 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 863
2 个回答

要将日期设置为准备好的语句,您需要更改值的类型:

 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);

原文由 MartenCatcher 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有一个类似的错误。结果我只需要更新 mysql-connector-java 的 jar 版本(使用 maven)

     <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>...</version>
    </dependency>

原文由 Kimball Robinson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题