Sqlite-JDBC查询datetime类型抛异常

==我使用的是把sqlite版本替换为sqlite-jdbc-3.7.2 解决 ==

下文转载:
http://blog.sina.com.cn/s/blog_667ac0360102w0nz.html

使用标准JDBC接口查询日期时间类型datetime会出现各种问题!查询语句如下:
ResultSet rs = stmt.executeQuery(“SELECT id, name, createTime FROM employee”);
System.out.println("createTime = " + rs.getTimestamp(“createTime”));

测试发现:
使用sqlite-jdbc-3.7.2.jar时,查询结果是“1970-01-01 08:00:02.015”;
使用sqlite-jdbc-3.8.11.2.jar时,抛异常java.sql.SQLException: Error parsing time stamp;
看了下两个版本的源码,发现sqlite-jdbc的3.8与3.7的代码完全不一样,是被重写过了!
下载地址:https://bitbucket.org/xerial/sqlite-jdbc/downloads

解决办法:
采用最新版本sqlite-jdbc-3.8.11.2.jar,然后
Class.forName(“org.sqlite.JDBC”);
Properties pro = new Properties();
pro.put(“date_string_format”, “yyyy-MM-dd HH:mm:ss”); //默认是yyyy-MM-dd HH:mm:ss.SSS,覆盖为yyyy-MM-dd HH:mm:ss;
c = DriverManager.getConnection(“jdbc:sqlite:c:/db/test.db”, pro);
这时候,调用JDBC查询是正常的!

如果使用了spring,可以通过dataSource的参数注入,来配置Connection的参数!这里使用了com.alibaba.druid.pool.DruidDataSource数据源,可以注入一个connectProperties属性,类型是Properties,键是date_string_format,值是yyyy-MM-dd HH:mm:ss;

这样就能解决datetime查询的问题了!

iPan
2015-10-09


以上是可以解决,查询数据库的datetime类型能正常显示;但是,发现调用JDBC的PreparedStatement来设置Date类型时候,写入的格式不对,使用数据库工具无法正常查看;但是再通过JDBC查询是能够正常显示的!
最终,使用最直接的解决方案,屏蔽使用datetime类型!使用varchar来取代!

iPan
2015-10-10

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sqlite-jdbc-3.36是一个用于Java编程语言的JDBC驱动程序,用于连接和操作SQLite数据库。SQLite是一种轻量级的嵌入式数据库引擎,没有独立的服务器进程,它将整个数据库作为一个文件存储在主机文件系统中。 sqlite-jdbc-3.36提供了用于连接SQLite数据库的API和工具,使得开发者可以使用Java语言轻松地在应用程序中操作SQLite数据库。它提供了各种功能,如连接数据库、创建和执行SQL语句、事务管理、批处理操作等。 使用sqlite-jdbc-3.36,可以通过以下步骤在Java应用程序中连接和操作SQLite数据库: 1. 下载并导入sqlite-jdbc-3.36的JAR文件到项目中。 2. 加载驱动程序类,这样可以将其注册到Java的JDBC驱动管理器中。 3. 使用JDBC连接字符串指定要连接的SQLite数据库文件路径,并使用驱动程序的getConnection()方法获得一个连接对象。 4. 通过连接对象创建一个语句对象,并使用该对象执行SQL查询或更新语句。 5. 处理和检索结果,可以使用语句对象的executeQuery()方法执行查询SQL语句,并使用结果集对象获取查询结果。 6. 关闭连接和释放资源,最后要确保关闭连接对象和释放相关资源,以防止资源泄漏。 sqlite-jdbc-3.36具有良好的性能和稳定性,可以轻松地与Java应用程序集成,并提供了强大的SQLite数据库操作功能。无论是开发桌面应用程序、移动应用程序还是服务器端应用程序,sqlite-jdbc-3.36都是一个很好的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值