没有为getDate找到合适的方法(日期)

时间:2014-07-07 10:37:55

标签: java mysql sql date

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

我已经尝试了

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

将日期转换为sql友好格式,但我仍然收到错误

  

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

     

方法ResultSet.getDate(int)不适用

     

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

     

方法ResultSet.getDate(String)不适用

     

(参数不匹配; Date无法转换为String)

错误发生在行

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

当我尝试使用

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

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

我也遇到了错误:

  

无法找到符号

     

symbo:class sql

     

location:package java

是的,我已经导入了java.sql.Date,但Netbeans告诉我这个导入未使用...

我真的很想我的智慧'结束......有没有人知道还有什么可做的?

P.S。:我在浮动时遇到了同样的问题:

+ resultSet.getFloat(somefloat)

错误讯息:

  

找不到合适的getFloat(float)方法

     

方法ResultSet.getFloat(float)不适用

     

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

     

方法ResultSet.getFloat(String)不适用

     

(参数不匹配; float无法转换为String)

编辑:极简主义代码段:

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 个答案:

答案 0 :(得分:1)

首先,要将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.PreparedStatement
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);
}

答案 1 :(得分:0)

  1. 您忘记执行获取查询了。做点什么

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

答案 2 :(得分:0)

当您获得结果集时,您可能需要考虑这一点:

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

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

但是我无法在你的代码中找到结果集。