Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为日期格式,将其插入MySQL_Java_Mysql - Fatal编程技术网

Java 将字符串转换为日期格式,将其插入MySQL

Java 将字符串转换为日期格式,将其插入MySQL,java,mysql,Java,Mysql,下午好 我正在尝试从JTextField获取字符串。然后将它转换为Date,然后将其发送到MYSQL语句中 String nom = jTextField_Name.getText().toUpperCase(); int temp = Integer.parseInt(jTextField_Temp.getText()); String d = jTextField_Date.getText(); System.out.print

下午好

我正在尝试从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());
并在这一行中传递变量casted

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

您应该使用preparedStatement子句,而不是将所有查询放入字符串中,如下所示:

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.util.Date传递给mySQL。。。没有必要将其解析为java.sql.Date可能的重复您不能简单地将
java.util.Date
转换为
java.sql.Date
…您没有显示重要的代码,即
insertTemperatura
的定义。请发布并包含该代码。不要那样构建SQL,而是使用带有占位符的
PreparedStatement
。你的代码很容易受到SQL注入攻击。你好,Dazak,谢谢你的回答。我刚试过,但我还是这么说。这可能是我从insertTemperatura方法中获得的输入类型的错误吗?我刚刚用代码更新了这个问题,也许我应该在那里修改它:SAs@JimGarrison说。。。使用预先准备好的语句。。。我更新了我的答案,这样你就可以看到了。现在我用准备好的语句修改了代码,但错误似乎在同一部分。正如我放置system.out.prints一样,它似乎没有通过以下行:dateparsed=(Date)format.parse(d);