簡體   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