【问题标题】:How to insert date and time to oracle in java?如何在java中向oracle插入日期和时间?
【发布时间】:2015-09-05 13:06:58
【问题描述】:

我知道 Oracle 只有 DATEDATETIMETIMESTAMP 类型。 我有一个在Java 制作的网站,我正在寻找一种在表Appointments 中插入Oracle 数据库日期和时间的方法。

例如:

约翰在 2016 年 1 月 12 日 21:00 有一个约会。

所以,格式将是day-month-year, hh24:minute

如果可能,我不想在我的应用程序中包含来自互联网的日期选择器。

如何仅使用 JSP/HTML 来做到这一点?

很遗憾,IE 或 Firefox 不支持 HTML5 类型的“日期”。 我的问题是使用一些输入字段是否是个好主意,并以某种方式将它们连接到“preparedSQL 语句”中,将这些数据插入数据库中的正确位置?

【问题讨论】:

  • 你能发布一些你的代码的相关部分吗?
  • 我还没有创建页面。但我只是想知道在开始之前我将如何做到这一点
  • 直接从 JSP 调用数据库通常是不好的做法。
  • 您将两个不相关的代码放在同一个地方:负责视图的代码和负责在数据库中插入日期的代码。其次,这种方法可能会让您陷入维护噩梦。
  • 那该怎么做,正确的方法?

标签: java html oracle date


【解决方案1】:

这里有一个框架代码可以帮助您入门。

Java 类(在您的情况下是可选的,但在现实生活中不是)

public class Appointment {
    private Integer id;
    private Date date;
    private List<User> participants;

    // Getters and setters...
}

public class User {
    private Integer id;
    private String firstname;
    // ...

    // Getters and setters...
}

小服务程序

@WebServlet("/createAppointment")
public class CreateAppointmentServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // Read form fields
        String date = request.getParameter("date");
        String hour = request.getParameter("hour");

        // Perform sanity check
        // ...

        // Grab a JDBC connection and call a PreparedStatement
        // ...

        // Get response writer
        PrintWriter writer = response.getWriter();

        // Build HTML code (error cases not shown for code clariry)
        StringBuilder htmlResponse = new StringBuidler();
        htmlResponse.append("<html>");
        htmlResponse.append("<h2>Your username is: " + username + "<br/>");      
        htmlResponse.append("Your password is: " + password + "</h2>");    
        htmlResponse.append("</html>");

        // Return response
        writer.println(htmlResponse.toString());

    }

}

JSP

<html>
  <body>
    <form name="loginForm" method="post" action="createAppointment">
        Date: <input type="text" name="date"/> <br/>
        Hour: <input type="text" name="hour"/> <br/>
        <input type="submit" value="Create appointment" />
    </form>
 </body>
</html>

要进一步了解,请阅读以下内容:Handling HTML form data with Java Servlet

【讨论】:

    【解决方案2】:

    无论如何,这是一种正常/好的方法。只需确保它们在进入数据库之前形成一个“可解析的日期/时间”字段,否则“尝试存储错误(或可能)错误的内容”就没有意义了。

    并且您不需要连接 SQL 查询中的字段,当您到达数据库层时,您应该传递一个普通的 DateTime(希望...或类似的东西),所以您只需要一个字段(一个?PreparedStatement)。

    更新:

    您从 JSP/HTML 页面获取值;然后尝试构建专门用于处理日期/时间例程的 Java 对象之一(DateTimeCalendarDate...或使用一些格式化程序)...然后你很好,因为您已经有了处理日期/时间的东西,以及您已经从用户那里获得的输入!这就是您需要在 PreparedStatement 中使用的内容。

    【讨论】:

    • 我不确定我的理解是否正确...如果我有一个 html 输入字段用于每天、每月、每年、每小时、每分钟,我该如何创建preparedStatement?
    • 谢谢。如果我无法处理,我会尝试回来。
    猜你喜欢
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多