使用Java中的STR_TO_DATE来插入日期,使用PreparedStatement

时间:2012-11-15 02:41:31

标签: java mysql date prepared-statement string-to-datetime

假设我们有一个名为 FrmRegistration 的JFrame。它的功能是将数据插入名为 records 的表中。

MySQL的命令 desc记录会产生以下结果:

+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id        | varchar(7)   | NO   | PRI |         |       | 
| name      | varchar(100) | NO   |     | NULL    |       | 
| birthday  | date         | NO   |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

FrmRegistration 中,有一个生日输入的JFormattedTextField,我们称之为 ftfBirthday 。在Netbeans中,我们通过右键单击它们并转到Properties - >将名称放入组件中。代码标签 - >变量名。或者右键单击 - >自定义代码 - >重命名...按钮。

右键单击该字段并转到“属性”,然后在“FormatterFactory”中单击“...”按钮。使用以下命令创建自定义字段:#### / ## / ##

JFormattedTextField的原因是用户不会通过键入斜杠来浪费时间。它们会自动显示。

FrmRegistration 中名为Insert的按钮的源代码应该怎么做?

1 个答案:

答案 0 :(得分:3)

在转到源代码之前,右键单击日期字段并转到“属性”。复制文本内容。它应该是(a =一个空格):

AAAA / AA / AA

它将用于“} else if(”/ /“.equals(birthday)){”line。

(参见适当参数的代码)

我添加了一些额外的东西,比如检查字段是否为空。

    try {
                Class.forName("com.mysql.jdbc.Driver");

                try (Connection con = DriverManager.getConnection(

                                "jdbc:mysql://localhost/database_name_here",
                                "username_here", "password_here")) {

                    String if = txtId.getText();
                    String name = txtName.getText();
                    String birthday = ftfBirthday.getText();

                    PreparedStatement stmt = con.prepareStatement(

                            "INSERT INTO records "
                            + "(id, name, birthday)"
                            + "VALUES(?,?,STR_TO_DATE(?,'%Y/%m/%d'))");

                    if (id.isEmpty()) {
                        JOptionPane.showMessageDialog(null,
                                "The ID field must be completed!");

                    } else if (name.isEmpty()) {
                        JOptionPane.showMessageDialog(null,
                                "The Name field must be completed!");

                    } else if ("    /  /  ".equals(birthday)) {
                        JOptionPane.showMessageDialog(null,
                                "The Birthday field must be completed!");

                    } else {

                        stmt.setString(1, id);
                        stmt.setString(2, name);
                        stmt.setString(3, birthday);

                        stmt.executeUpdate();

                        JOptionPane.showMessageDialog(this, " Data was saved successfully! ");

                    }

                }

            } catch (SQLException e) {
                JOptionPane.showMessageDialog(this, "SQL command error "
                        + e.getMessage());

            } catch (ClassNotFoundException e) {
                JOptionPane.showMessageDialog(this,
                        " Database driver not found ");

        }

就是这样。希望它可以帮到某人! : - )