当前位置: 首页 > 知识库问答 >
问题:

找不到适合getDate(Date)的方法

东郭弘
2023-03-14

我想收集一些数据并将其存储到数据库(在Java中,使用MySQL)。其中一个数据是日期(创建/插入此条目时)。

我已经试过了

private java.util.Date dateUtil = new java.util.Date();
private java.sql.Date dateSQL= new java.sql.Date(dateUtil.getTime());

将日期转换为SQL友好的格式,但我仍然得到错误

找不到适合getDate(Date)的方法

方法结果集。getDate(int)不适用

(参数不匹配;日期无法转换为int)

方法ResultSet.get日期(字符串)不适用

(参数不匹配;日期无法转换为字符串)

错误发生在直线上

System.out.println("(" + resSet.getInt(1) + ")"
...
+ resultSet.getDate(dateSQL)
...
);

当我尝试使用

resultSet.getDate(java.sql.Date(dateSQL.getTime())

或者

resultSet.getDate(java.sql.Date(dateUtil.getTime())

我也犯了一个错误:

找不到符号

sql类

位置:java包

是的,我已经导入了java。sql。日期但Netbeans告诉我此导入未使用。。。

我真的一筹莫展...有人知道还能做什么吗?

附言:我对浮动也有同样的问题:

+ resultSet.getFloat(somefloat)

错误消息:

找不到适合getFloat(浮动)的方法

方法结果集。getFloat(浮点)不适用

(参数不匹配;可能从float int进行有损转换)

方法结果集。getFloat(字符串)不适用

(参数不匹配;无法将浮点转换为字符串)

编辑:极简主义代码片段:

public class sqlTest
{
    public static DBConnection connection = new DBConnection();
    private static PreparedStatement prepStatement;
    private static ResultSet resSet;

    private Date date;
    private float someFloat;
    

    public static void insertExample(Date date, float someFloat)
    {
        connection = (DBConnection) connection.getInstance();
        
        if(connection == null)
        {
            try
            {
                String sql = "INSERT INTO sample(date, someFloat) VALUES(?, ?)";
                
                prepStatement = connection.prepareStatement(sql);
                
                prepStatement.setDate(1, date);
                prepStatement.setFloat(2, someFloat);

                prepStatement.executeUpdate();
                
                String lastSample = "SELECT date, someFloat FROM SAMPLE";
                
                if(resSet.next())
                {
                    System.out.println("(" + resSet.getInt(1) + ")" + resSet.getDate(java.sql.Date(date.getTime())) + " " + resSet.getFloat(someFloat)); //here the error(s) occur
                }
            }
            catch(SQLException sqle)
            {
                logger.log(Level.SEVERE, "SQLException was thrown while inserting sample: ", sqle.getMessage()); 
            }
        }
    }
}

共有3个答案

左丘宜然
2023-03-14

当你得到一个结果集时,你可能需要考虑以下几点:

您没有在getDate方法中指定列索引:

java.sql.Date result = resSet.getDate(0);
Float otherFloat = resSet.getDate(1);

但是我在代码中找不到查询结果集。

白越
2023-03-14

>

  • 你忘记执行取回查询了。做点像

    PreparedStatement pstmt = connection.prepareStatement(lastSample);
    resSet = pstmt.executeQuery();
    

  • 杨俊茂
    2023-03-14

    首先,要将java.util.Date持久化到Java的数据库中,您必须将其转换为java.sql.Date

    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date myDate = formatter.parse("2006-12-31");
    java.sql.Date sqlDate = new java.sql.Date(myDate.getTime());
    

    转换后,您可以使用的setDate()java.sql.准备语句

    String sql = "INSERT INTO sample(date, someFloat) VALUES(?, ?)";
    
    PreparedStatement prepStatement = conn.prepareStatement(sql);
    PreparedStatement prepStatement1 = conn.prepareStatement("SELECT * FROM sample");
    prepStatement.setDate(1, sqlDate);
    prepStatement.setFloat(2, 1.0f);
    

    最后你可以这样找回

    ResultSet rset = prepStatement1.executeQuery();
    while(rset.next())
    {
      String date = rset.getDate("date").toString();
      Float f = rset.getFloat("someFloat");
      System.out.println(date +" "+f);
    }
    
     类似资料:
    • 在启动activity中找不到合适的方法是显示错误的错误是: 错误:(123,17)错误:找不到适合startActivities(Intent)方法上下文的方法。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法上下文。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法

    • 我试图在Flink的数据流上应用每窗口功能。以下是我的代码 下面是我的实现MyProcessWindow函数 然而,当我试图通过maven编译上述代码时,我得到了以下错误 知道我做错了什么吗?仅供参考,我正在使用ApacheFlink 1.5.1版,并在Mac上使用maven3编译Java代码。

    • 算法问题:给定一个非负整数列表,将它们排列成最大的数。 例如,给定[3,30,34,5,9],形成的最大数是9534330。 注意:结果可能很大,因此需要返回一个字符串,而不是整数。 而且我还在想办法避免使用额外的空间。

    • 我需要创建一个以id和值作为资源的ArrayList,这样我将来就可以知道给定图标在哪个id下。不幸的是,我的解决方案遇到了一个问题,如何解决? 我给出了一个错误: 错误:找不到添加(int,int)航路点图标的合适方法。添加(0,R.drawable.ic_point_默认值)

    • 问题内容: 我试图得到昨天的日期。所以我写了下一个函数: 但这给了我下一个警告: 而且它没有用。 谢谢您的帮助。 问题答案: Date#getDate() 是JDK 1.1之后不推荐使用的方法。您应该改用 Calendar 类来操纵日期。 从 API : 在JDK 1.1之前,Date类具有两个附加功能。它允许将日期解释为年,月,日,小时,分钟和秒值。它还允许格式化和解析日期字符串。不幸的是,这些

    • 我试图用java创建一个分数计算器,我使用drop box int Joptionpane来显示算术运算,但是每当我编译代码时,总是会出现错误。 这是我得到的全部错误。 .java:47:错误:找不到适合showInputDialog(,String,int,,String[],String)的方法String input=(String)JOptionPane。showInputDialog(n