DateTime 未使用 jsp 插入数据库

Posted

技术标签:

【中文标题】DateTime 未使用 jsp 插入数据库【英文标题】:DateTime is not inserting into the database using jsp 【发布时间】:2019-01-01 18:34:37 【问题描述】:

我正在使用 jsp 文件和 mysql。我在将日期和时间插入数据库时​​遇到问题。我可以插入其他信息,但只能插入日期和时间。我也需要将日期和时间插入我的数据库。我怎样才能实现它?任何帮助表示赞赏。

Jsp 代码

 <% 
            String userId       = request.getParameter("UserID");
            String arm          = request.getParameter("Arm");
            String[] armNumber  = request.getParameterValues("ArmNumber");
            String remark       = request.getParameter("Remark");
            String Timestamp    = request.getParameter("Time");


            out.println("<tr>");
            out.println("<td style='width: 10%'>");
            out.println(Timestamp);
            out.println("</td>");
            out.println("</tr>");


            int count           =0;
            Connection conn     = null;
            try 
                Class.forName("com.mysql.jdbc.Driver");
                String connURL = "jdbc:mysql://localhost/Dodo?user=Dodo&password=0000";
                conn = DriverManager.getConnection(connURL);

                if (armNumber != null)

                for(int i=0; i<armNumber.length; i++)

                        String sql="Insert into assign(UserID, Arm, ArmNumber, Remark, Time) Values(?,?,?,?,now())";
                        PreparedStatement pstmt=conn.prepareStatement(sql);

                        pstmt.setString (1,userId);
                        pstmt.setString (2,arm);
                        pstmt.setString (3,(armNumber[i]));
                        pstmt.setString (4,remark);

                    int rec=pstmt.executeUpdate();

                    if (rec==1)
                        count++;
                    
                
    %>


            <form action="assign.jsp" method="post">
                <label><%=count%> assigned!!</label>
                <td style >
                <p><input type="submit" value="Return" name="ReturnBtn" /></p>
            </form>


    <%
            conn.close();
            
            catch(Exception e)
                e.printStackTrace();
            
            finally

            
    %>

【问题讨论】:

你的数据库中Time的类型是什么? 日期时间@AvijitBarua 那就试试我的回答 需要将datetime转换为mysql日期时间格式 如何转换? @sumesh TG 【参考方案1】:

先写sql这样的语句

String sql="Insert into assign(UserID, Arm, ArmNumber, Remark, Time) Values(?,?,?,?,?)";

然后在pstmt.setString (4,remark);下添加一些额外的语句

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
pstmt.setDate(5,dateFormat.format(date));

【讨论】:

感谢您的帮助。但是“DateFormat”有一个错误,所以我把它改成了“SimpleDateFormat”。但是,“setDate”有一个错误 @Rachelk 我忘了添加职位编号 5 。现在检查! 我试过了,但是它显示了这个错误 在这一行找到了多个注释: - PreparedStatement 类型中的方法 setDate(int, Date) 不适用于参数 (int, String) - PreparedStatement 类型中的方法 setDate(int, Date) 不适用于参数 (int, String)" @Avijit Barua 我已经写了那个语句。但是,它有一个错误@avijit barua 请不要教年轻人使用陈旧过时且臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。今天我们在java.time, the modern Java date and time API 和它的DateTimeFormatter 中做得更好。【参考方案2】:

now() 包含在 sql 中,这是一个 String,我假设您正在寻找一个名为 now() 的方法,它返回当前时间和日期,但因为它在 String 中,所以它没有调用方法。您需要执行以下操作:

String sql="Insert into assign(UserID, Arm, ArmNumber, Remark, Time) Values(?,?,?,?,?)";
....
pstmt.setString(1,userId);
pstmt.setString(2,arm);
pstmt.setString(3,(armNumber[i]));
pstmt.setString(4,remark);
pstmt.setTimestamp(5, new Date());//this is java.util.Date

【讨论】:

感谢指导,但是如何为now() 创建一个返回当前时间和日期的方法。因为我没有那个方法@mohammedkhan

以上是关于DateTime 未使用 jsp 插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

jsp向SqlServer插入日期型数据

怎样在mybatis里向mysql中插入毫秒数的时间?

怎么样将java中的date类型插入到mysql的datetime

转换datetime并在MySQL中插入

在 Android 中插入 datetime.now SQLite

在JSP中,取到的String类型的值怎么转换成int类型插入数据库