java - 如何从 sql3 数据库中获取时间并转换为 LocalTime
问题描述
我有这个代码,但每次我到达时都会出错rs.getTime("startTime").toLocalTime()
public int loadAttractionsFromDB(String dbName){
int counter = 0;
Connection c = null;
try
{
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:"+dbName);
System.out.println("Opened database successfully");
Statement stmt = c.createStatement();
String q = "select attName, startTime, endTime, duration from Attractions where park == 1";
System.out.println(q);
ResultSet rs = stmt.executeQuery( q );
while ( rs.next() )
{
addAttraction(new Attraction(rs.getString("attName"), rs.getTime("startTime").toLocalTime(),rs.getTime("endTime").toLocalTime(), rs.getInt("duration")));
counter++;
}
rs.close();
stmt.close();
c.close();
}
catch ( Exception e )
{
System.err.println( "ERROR : "+ e.getMessage() );
}
return counter;
解决方案
来自 sql 的时间变量的输出是一个字符串。所以你必须使用rs.getString("startTime")
然后将其解析为 LocalTimeLocalTime.parse(rs.getString("startTime"))
推荐阅读
- android - 自动完成搜索片段如何仅在按钮 onclick 上可见?
- javascript - 使用嵌套对象调用 setState 不会正确更新状态
- ajax - X-Editable - 不显示来自模态的 ajax 响应 href 的编辑框
- qt - 将文件复制到输出目录 QT
- java - 如何绕过 Java 中的 ConcurrentModificationException?
- python - 加入/合并在 python 中不起作用
- android - Facebook 帐户工具包不适用于低 android 版本
- android - GridLayout:setMinimumWidth 必须遵守水平约束?
- c++ - 中止陷阱:6 错误
- sql - SQL删除多个条件重复记录