繁体   English   中英

如何将日期和时间从JDateChooser格式化为mysql datetime列

[英]how to format date and time from JDateChooser to mysql datetime column

我正在尝试将JDateChooser的当前日期和时间存储到mysql数据库中,但是它仅插入今天的日期,而当前时间是00:00:00

  java.util.Date dt1,dt2;     
  String n=name.getText();
  String i=id.getText();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  dt1=jDateChooser1.getDate();
  dt2=jDateChooser2.getDate();
  String strdtver1=(String) sdf.format(jDateChooser1.getDate());
  String strdtver2=(String) sdf.format(jDateChooser2.getDate());

  try {
     Class.forName("com.mysql.jdbc.Driver");
     Connection con= (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/testing","root","");
    Statement stmt=con.createStatement();
    String sql="Insert into ss values('"+(n)+"','"+(strdtver1)+"','"+(strdtver2)+"','"+(i)+"');";
    stmt.executeUpdate(sql);
    JOptionPane.showMessageDialog(this, "RECORD ENTERED SUCCESSFULLY");

  } catch(Exception e) {
      JOptionPane.showMessageDialog(this,e.getMessage());
  }

这是一个存储签入和签出日期和时间的程序。 mysql中的数据类型是Check_in和Check_out的日期时间。 在我的sql的Check_in列中输入的数据是2014-10-27 00:00:00。 当前日期是正确的,但我想插入当前时间而不是00:00:00。请帮助我。

您正在使用SimpleDateFormat格式化从窗口小部件获得的日期,但是您仅使用日期模式作为格式字符串。 对于mysql支持的日期和时间字符串格式,请使用:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

您不应该将Date对象转换为Strings。 而是将它们传递给PreparedStatement:

try (PreparedStatement statement =
    con.prepareStatement("insert into ss values ?, ?, ?, ?")) {

    statement.setString(1, n);
    statement.setDate(2, dt1);
    statement.setDate(3, dt2);
    statement.setString(4, i);

    statement.executeUpdate();
}

另外,强烈建议在存储用户数据时使用PreparedStatement,因为它可以防止称为SQL Injection的严重恶意攻击媒介。 (想象一下,如果用户输入的姓名为', null, null, null; delete from ss; insert ' 。)

   public void calendarExpale(){
    JPanel content = new JPanel();
    content.setLayout(new FlowLayout());
    final JTextField textField = new JTextField(15);
    JDateChooser chooser = new JDateChooser();
    Date d1=(Date)chooser.getDate();

   chooser.setSize(15, 10);
  chooser.addPropertyChangeListener("date", new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {

    JDateChooser chooser = (JDateChooser)evt.getSource();
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:MM:SS");
    textField.setText(formatter.format(chooser.getDate()));
}
});

 content.add(textField);
  content.add(chooser);
   }

这是我使用过的最简单的方法。 您无需执行任何其他操作。

statement.setString(2,((JTextField) jDateChooser1.getDateEditor().getUiComponent()).getText());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM