簡體   English   中英

將String轉換為Date格式,以將其插入MySQL

[英]Convert String to Date format, to insert it into MySQL

下午好,

我正在嘗試從JTextField獲取字符串 然后轉換為日期以便隨后發送MYSQL語句中。

        String nom = jTextField_Name.getText().toUpperCase();
        int temp = Integer.parseInt(jTextField_Temp.getText());
        String d = jTextField_Date.getText();
        System.out.println("Inputs taken");

        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
        Date parsed = (Date) format.parse(d);
        java.sql.Date sql = new java.sql.Date(parsed.getTime());
        System.out.println("Converted to proper Date for MYSQL");

        int retorn = db.insertTemperatura(nom, sql, temp);
        if (retorn == 1){
            jTextArea_Result.setText("S'ha inserit "+nom+" amb la seva temperatura correctament!");
        } else{
            jTextArea_Result.setText("-----Hi ha hagut un ERROR a l'hora d'inserir "+nom+" amb la seva temperatura.\nIntenta-ho de nou sisplau.");
        }
        } catch (ParseException ex) {
            Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
        }

問題是,我執行的轉換不正確,我嘗試了不同的方式,但我總是想出這個錯誤:

run:
Llegides entrades
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

我使用了其他類型的格式,但是我不知道自己在做什么錯。

提前致謝!

我要求將其插入DDBB的方法是:

 public int insertTemperatura(String nom, Date data, int temperatura){
    try {
        Statement s = c.createStatement();
        String query = "INSERT INTO TaulaTemp VALUES ('"+nom+"',"+temperatura+","+data+")";

        int numRows = s.executeUpdate(query);
        if (numRows > 0){
            return 1;
        }
        return 0;
    } catch (SQLException ex) {
        Logger.getLogger(DDBB.class.getName()).log(Level.SEVERE, null, ex);
        return -1;
    }
}

您可以直接將java.util.Date傳遞給mySQL ...不必將其強制轉換為java.sql.Date

只需刪除此行:

java.sql.Date sql = new java.sql.Date(parsed.getTime());

並在這一行中傳遞變量

int retorn = db.insertTemperatura(nom, parsed, temp);

更新:

您應該使用prepareStatement子句,而不是將所有查詢都放在String中,如下所示:

String query = "INSERT INTO TaulaTemp VALUES (?,?,?)";

PreparedStatement preparedStatement = dbConnection.prepareStatement(query);
preparedStatement.setString(1, nom);
preparedStatement.setDate(2, data);
preparedStatement.setInt(3, temperatura);
// execute insert SQL stetement
preparedStatement .executeUpdate();

記住要使用PreparedStatement添加必要的import語句:

import java.sql.PreparedStatement;

暫無
暫無

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

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