【问题标题】:How to insert DATE using jsp如何使用jsp插入日期
【发布时间】:2014-10-17 08:35:52
【问题描述】:

我的网站上有一个反馈页面,其中包含nameemailcomments。这是我在JSP 上的代码,我正在使用Apache Tomcat 7.0Oracle DB

String query = "Insert into t_comments(name, email, comments) values('"
                                + realname
                                + "','"
                                + email
                                + "','"
                                + comments+"')";

这很好用。但我决定将DATEC 列(数据类型DATE)添加到我的表t_comments。所以我的查询应该是这样的

String query = "Insert into t_comments(name, email, comments,datec) values('"
                                + realname
                                + "','"
                                + email
                                + "','"
                                + comments
                                + "',"
                                + "TO_DATE('"
                                + new java.util.Date()
                                + "', 'dd/mm/yyyy hh24:mi:ss'))";

这行不通。

ORA-01858: a non-numeric character was found where a numeric was expected

也许我在表中插入了错误的 DATE 类型。我还有另一个问题。 namecomments 是西里尔字母。并且当它们插入表格时,它们以不同的编码显示不正确。我的JSP 页面中有这些行

<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>

所以请帮我解决我的两个问题

  1. 在我的表中插入 DATE

  2. 在我的表格中插入正确的西里尔字母

谢谢

【问题讨论】:

    标签: java oracle jsp date cyrillic


    【解决方案1】:

    让 oracle 为您代劳。

    String query = "Insert into t_comments(name, email, comments,datec) values('"
                                    + realname
                                    + "','"
                                    + email
                                    + "','"
                                    + comments
                                    + "', CURRENT_TIMESTAMP)";
    

    See this link for more info.

    【讨论】:

    • 这不是我想要的。为什么使用 java.util.Date() 不起作用?但对我来说,无论如何插入日期都没有,所以我会试试你的报价。谢谢!
    【解决方案2】:

    您应该调试您的代码并检查 Date 对象 toString() 是否与 Oracle 预期的模式匹配。

    如果您不想采用 Arvind 的方式(我认为这实际上是个好主意),您可以使用 SimpleDateFormat 格式化您的日期。

    您还应该考虑使用PreparedStatement,而不是使用字符串连接来构建语句。

    【讨论】:

      【解决方案3】:

      感谢大家的回答。我正在使用CURRENT_TIMESTAMPDATE 从@Arvind Sridharan 插入到我的表中,对于西里尔字符,我在我的jsp 中添加了以下几行

      request.setCharacterEncoding("UTF-8");
      realname = new String(realname.getBytes("ISO-8859-1"),"UTF8");
      comments = new String(comments.getBytes("ISO-8859-1"),"UTF8");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        • 1970-01-01
        • 2019-06-29
        相关资源
        最近更新 更多