[英]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.