gpt4 book ai didi

java - 将字符串转换为日期格式,插入MySQL

转载 作者:行者123 更新时间:2023-11-29 10:58:55 30 4
gpt4 key购买 nike

下午好,

我正在尝试从 JTextField 获取字符串。然后将其转换为Date,然后将其发送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);

更新:

您应该使用准备好的语句子句,而不是将所有查询放在字符串中,如下所示:

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 java.sql.PreparedStatement;

关于java - 将字符串转换为日期格式,插入MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42583798/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com