簡體   English   中英

如何為我的 SQL 添加 JAVA 時間戳才能工作?

[英]How do you add a JAVA TimeStamp for my SQL to work?

我必須制作一個將信息保存在數據庫中的 Refuge 程序; 我對 date_entry 變量有疑問,因為我不確定如何實現它。 數據庫說這個條目應該在時間戳中,但我不知道如何讓它在我的代碼上工作; 嘗試制作 function 然后將 function 分配給我的變量,但是是的,沒有用。 我添加了數據庫以防萬一。 這是我到目前為止得到的:

JButton btnInsert = new JButton("Insert");
        btnInsert.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                String name = txtPetName.getText();
                String photo = txtPetPhoto.getText();
                String type = txtPetType.getText();
                String color = txtColor.getText();
                int gender = Integer.parseInt(txtGender.getText());
                int isSterilized = Integer.parseInt(txtSterlized.getText());
                String pedigree = txtPedigree.getText();
                String dateEntry =  showDate();         //HERE'S MY DOUBT>
                String vaccine1 = txtVaccine1.getText();
                String vaccine2 = txtVaccine2.getText();
                String vaccine3 = txtVaccine3.getText();

                Connection conn = null;
                PreparedStatement pstmt = null;

                try {

                    Class.forName("com.mysql.jdbc.Driver");
                    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/refugio","root","2797");
                    pstmt = conn.prepareStatement("INSERT INTO PETS VALUES(?,?,?,?,?,?,?,?,?,?)");
                    pstmt.setString(1, name);
                    pstmt.setString(2, photo);
                    pstmt.setString(3, type);
                    pstmt.setString(4, color);
                    pstmt.setInt(5, gender);
                    pstmt.setInt(6, isSterilized);
                    pstmt.setString(7, pedigree);
                    pstmt.setString(8, showDate()); //THEN HERE
                    pstmt.setString(9, vaccine1);
                    pstmt.setString(10, vaccine2);
                    pstmt.setString(11, vaccine3);
                    int i = pstmt.executeUpdate();

                    if(i>0) {
                        JOptionPane.showMessageDialog(null, "Data was saved");
                    }else {
                        JOptionPane.showMessageDialog(null, "Data was not saved");
                    }


                }catch(Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
        });
        btnInsert.setBounds(29, 715, 379, 54);
        contentPane.add(btnInsert);
/**
DATABASE:
CREATE DATABASE refugio;

USE refugio;

CREATE TABLE Pets
(
   petName VARCHAR(15) PRIMARY KEY NOT NULL,
   petPhoto VARCHAR(50) NULL,
   petType VARCHAR(10) NOT NULL,
   color VARCHAR(15),
   gender TINYINT(1) NOT NULL COMMENT '0 - female, 1 - male',
   isSterilized TINYINT(1) COMMENT '0 - NO, 1 - YES',
   pedigree VARCHAR(15),
   date_entry timestamp NOT NULL,
   vaccine1 VARCHAR(15) NULL,
   vaccine2 VARCHAR(15) NULL,
   vaccine3 VARCHAR(15) NULL
);
*/
import java.sql.Timestamp;
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(timestamp);

學分: 這里

MySQL 中的TIMESTAMP類型類似於標准 SQL 類型TIMESTAMP WITH TIME ZONE

適當的 Java class 是OffsetDateTime

捕捉在時區中看到的當前時刻。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

提取一個OffsetDateTime

OffsetDateTime odt = zdt.toOffsetDateTime() ;

發送到數據庫。

myPreparedStatement.setObject( … , odt ) ;

恢復。

OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;

這已經在 Stack Overflow 上討論過很多次了。 因此,搜索以了解更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM