如何使用Java从Sqlite3数据库中解析日期?

通过使用POJO为我的方法创建模型,我正在从sqlite3

DB获取数据。在检索arraylist中的数据时,我得到了日期解析错误。该日期在sqlite3数据库中定义为时间戳,并在编译时 :

。并且在编译查询时抛出该 :

我正在使用getDate()从表中检索日期。

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;

}

我将日期定义为: 在POJO中。

回答:

SQLite3不提供日期类型。

您需要将其获取为String并用Java解析。

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(rs.getString("CREATION_TIME")); //Throws exception

请参阅:http://www.sqlite.org/datatype3.html

以上是 如何使用Java从Sqlite3数据库中解析日期? 的全部内容, 来源链接: utcz.com/qa/420694.html

回到顶部