Преобразовать строку в формат даты, чтобы вставить ее в MySQL
Добрый день,
Я пытаюсь получить строку из JTextField. Затем преобразуйте его в Dat e для последующей отправки в оператор 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;
}
}
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;