如何使用Java从Sqlite3数据库获取解析日期? [英] How to get parsed Date from Sqlite3 databse with Java?
问题描述
我通过使用POJO为我的方法创建模型,从sqlite3 DB获取数据。在arraylist中检索数据时,我得到日期解析错误。日期在sqlite3数据库中被定义为时间戳,并且在编译它时抛出:无法解析日期:2015-05-21 12:41:56错误。在编译查询时,它会抛出:解析时间戳时出错我正在使用getDate()从表中检索日期。
I am getting data from sqlite3 DB, by creating a model for my method with POJO. While retrieving data in a arraylist I am getting parse error for date. The date is defined as timestamp in the sqlite3 DB and while compiling it is throwing : Unparseable date: "2015-05-21 12:41:56" error. And while compiling query it is throwing : Error parsing time stamp I am using getDate() to retrieve date from the table.
public List<EnergyMeter> getAllData() {
List<EnergyMeter> meters = new ArrayList<EnergyMeter>();
try {
LOGGER.info("############### FetchData.getAllData() start");
Statement statement = DBConnection.getConnection().createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM ENERGY_METER");
LOGGER.info("############### FetchData.getAllData() meters:"+rs.getDate("CREATION_TIME"));
while (rs.next()) {
EnergyMeter energyMeter = new EnergyMeter();
energyMeter.setDEVICE_IP(rs.getString("IP"));
energyMeter.setCREATION_TIME(rs.getDate("CREATION_TIME"));
energyMeter.setDESCRIPTION(rs.getString("DESCRIPTION"));
energyMeter.setDEVICE_NAME(rs.getString("DEVICE_NAME"));
energyMeter.setEMAIL_ID(rs.getString("EMAIL_ID"));
energyMeter.setFDU_NAME(rs.getString("FDU_NAME"));
energyMeter.setICBS(rs.getString("ICBS"));
energyMeter.setLOCATION(rs.getString("LOCATION"));
energyMeter.setMAC_ADDRESS(rs.getString("MAC_ADDRESS"));
energyMeter.setMASTER_ID(rs.getString("MASTER_ID"));
energyMeter.setPARAMETER(rs.getString("PARAMETER"));
energyMeter.setPORT(rs.getString("PORT"));
energyMeter.setPRODUCT_NAME(rs.getString("PRODUCT_NAME"));
energyMeter.setSMTP(rs.getString("SMTP"));
energyMeter.setSNMP(rs.getString("SNMP"));
meters.add(energyMeter);
}
} catch (SQLException e) {
e.printStackTrace();
}
LOGGER.info("############### FetchData.getAllData() end");
return meters;
}
我将日期定义为:私人日期CREATION_TIME; 在POJO。
I defined date as : private Date CREATION_TIME; in POJO.
推荐答案
SQLite3不提供日期类型。
SQLite3 doesn't provide a date type.
你需要把它作为一个String并用Java解析它。
You need to get it as a String and parse it in Java.
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(rs.getString("CREATION_TIME")); //Throws exception
参见: http://www.sqlite.org/datatype3.html
这篇关于如何使用Java从Sqlite3数据库获取解析日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!