我想收集一些数据并将其存储到数据库中(使用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());
}
}
}
}
答案 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)
您忘记执行获取查询了。做点什么
PreparedStatement pstmt = connection.prepareStatement(lastSample);
resSet = pstmt.executeQuery();
答案 2 :(得分:0)
当您获得结果集时,您可能需要考虑这一点:
您没有在getDate方法中指定列索引:
java.sql.Date result = resSet.getDate(0);
Float otherFloat = resSet.getDate(1);
但是我无法在你的代码中找到结果集。