使用jdbc更新数据时间时如何屏蔽各种数据库的差异性
来源:互联网 发布:北京 室内 篮球场 知乎 编辑:程序博客网 时间:2024/05/23 20:33
当我们要向数据库中写数据时,通常要附加上数据的更新时间,不同的数据库更新时间的方法不同,如何在代码中屏蔽这种差异性呢?
值得注意的问题是:
1、由于代码和数据库可能不在同一台机器上部署,所以要使用数据库的时间
2、为了方便保持不同数据库中更新的时间格式一致(不能将时间字段定义为时间戳类型,是因为不同数据库的时间戳格式不同),将字段定义为varchar类型。
其实,方法很简单,就是调用各自数据库的时间戳函数。
我们可以在BaseDao中定义一个方法,来获取当前数据库的时间戳函数,如下:
public String getTimeStamp() {String timeStamp = "";if (isOracle()) {timeStamp = "to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff3')";} else if (isDB2()) {timeStamp = "VARCHAR_FORMAT(current TIMESTAMP,'yyyy-mm-dd hh24:mm:ss.ff3')";} else if (isMSSQL()) {} else {}return timeStamp;}
然后,具体Dao中填入时间字段时,可以调用上述方法,如下:
sql.append(" UPDATETIME=" + this.getTimeStamp());
特别需要注意的地方是:不能将该函数的值作为参数赋给相应字段,如下:
params.addValue("UPDATETIME", getTimeStamp());//ERROR
原因是:字段的类型是字符串,该函数的返回值也是字符串,结果即使写入成功,字段的值也是“to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff3')"或者“VARCHAR_FORMAT(current TIMESTAMP,'yyyy-mm-dd hh24:mm:ss.ff3')”等。
效果:
不仅使用的是数据库的本地时间,同时可以按照我们规定的统一格式赋值。
0 0
- 使用jdbc更新数据时间时如何屏蔽各种数据库的差异性
- 各种数据库使用JDBC连接的方式
- 各种数据库使用JDBC连接的方式
- 各种数据库使用JDBC连接的方式
- 各种数据库使用JDBC连接的方式
- 各种数据库使用JDBC连接的方式
- 各种数据库使用JDBC连接的方式
- 各种数据库使用JDBC连接的方式
- 各种数据库使用JDBC连接的方式
- 各种数据库使用JDBC连接的方式
- Java使用jdbc连接Sqlite数据库,进行各种数据操作
- [Sqlite]-->Java使用jdbc连接Sqlite数据库进行各种数据操作的详细过程
- JDBC更新数据库中数据
- 使用JDBC连接各种数据库
- 使用JDBC连接各种数据库
- 使用JDBC连接各种数据库
- 使用JDBC连接各种数据库
- 更新数据时如何使时间自动更新
- hdu1846
- KMP算法
- android 变色状态栏
- Java定义数组
- 前端框架
- 使用jdbc更新数据时间时如何屏蔽各种数据库的差异性
- Matlab Tricks(二)—— 空参空返回值的函数
- 第11周阅读程序(3)
- iOS 导航栏navigation的translucent属性 影响半透明状态
- C++ 容器vector
- Android6.0运行时权限学习总结
- ibatis removeFirstPrepend失效解决方法
- APPLE推送通知APNS
- 让 SVN (TortoiseSVN)提交时忽略bin和obj目录