SQLite JDBC rs.getDate()getTimestamp()等都返回错误的值
发布时间:2020-12-12 19:01:10 所属栏目:百科 来源:网络整理
导读:由于某种原因使用JDBC for SQLite时,Date和Timestamp值正确存储在DB中,在使用命令行sqlite3工具时正确显示,但使用ResultSet函数检索这些值时,它不起作用.下面是一个小型测试类,演示了我的意思. import java.sql.*;public class Test { public static void ma
由于某种原因使用JDBC for SQLite时,Date和Timestamp值正确存储在DB中,在使用命令行sqlite3工具时正确显示,但使用ResultSet函数检索这些值时,它不起作用.下面是一个小型测试类,演示了我的意思.
import java.sql.*; public class Test { public static void main(String[] args) throws Exception { Class.forName("org.sqlite.JDBC"); Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db"); Statement stat = conn.createStatement(); stat.executeUpdate("drop table if exists people;"); stat.executeUpdate("create table people (name,occupation,date date);"); stat.executeUpdate("insert into people values ('Turing','Computers',date('now'));"); ResultSet rs = stat.executeQuery("select * from people;"); while (rs.next()) { System.out.println("name = " + rs.getString("name")); System.out.println("job = " + rs.getString("occupation")); System.out.println("date = " + rs.getDate("date")); System.out.println("dateAsString = " + rs.getString("date")); } rs.close(); conn.close(); } } 我得到的输出是: name =图灵 解决方法像Scott说的那样:SQLite没有Date类型.您可以让SQLite使用strftime函数为您进行转换:strftime(‘%s’,date).然后你可以在Java端使用rs.getDate. 您还可以将SQLite日期检索为字符串,并将其解析为日期: DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { Date today = df.parse(rs.getString("date")); System.out.println("Today = " + df.format(today)); } catch (ParseException e) { e.printStackTrace(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |