Oracle JDBC驱动中对Date支持的改动

——一直我们在Oracle8i上面用的程序,昨天发现放到9i数据库上面,用9i的JDBC驱动
连接后,发现我们用Java的Date类型放入到数据库DATE类型字段的数据,没有了时分
秒的信息。但是在8i上面用8i的JDBC驱动是没有问题的。换了一个我们自己Patch过的
8iJDBC驱动连9i数据库,DATE型的数据又可以保存时间信息了。结论就是9i的驱动是
不能将Java的Date里面的时间信息放入到DATE里面。

——翻查了Oracle的FAQ,果然发现这个结论和相应的解决办法:

Prior to 9.2, the Oracle JDBC drivers mapped the DATE SQL type to java.sql.Timestamp. This made a certain amount of sense because the Oracle DATE SQL type contains both date and time information as does java.sql.Timestamp. The more obvious mapping to java.sql.Date was somewhat problematic as java.sql.Date does not include time information. It was also the case that the RDBMS did not support the TIMESTAMP SQL type, so there was no problem with mapping DATE to Timestamp.

In 9.2 TIMESTAMP support was added to the RDBMS. The difference between DATE and TIMESTAMP is that TIMESTAMP includes nanoseconds and DATE does not. So, beginning in 9.2, DATE is mapped to Date and TIMESTAMP is mapped to Timestamp. Unfortunately if you were relying on DATE values to contain time information, there is a problem.

There are several ways to address this problem:

Alter your tables to use TIMESTAMP instead of DATE. This is probably rarely possible, but it is the best solution when it is.

Alter your application to use defineColumnType to define the columns as TIMESTAMP rather than DATE. There are problems with this because you really don’t want to use defineColumnType unless you have to (see What is defineColumnType and when should I use it?).

Alter you application to use getTimestamp rather than getObject. This is a good solution when possible, however many applications contain generic code that relies on getObject, so it isn’t always possible.

Set the V8Compatibility connection property. This tells the JDBC drivers to use the old mapping rather than the new one. You can set this flag either as a connection property or a system property. You set the connection property by adding it to the java.util.Properties object passed to DriverManager.getConnection or to OracleDataSource.setConnectionProperties. You set the system property by including a -D option in your java command line.

java -Doracle.jdbc.V8Compatibility=”true” MyApp

Eclipse的resource视图去除CVS目录显示的方法

当项目文件是从CVS checkout出来的时候,用eclipse打开就会在视图里
面出现CVS的目录,甚是碍眼。

虽然在eclipse的resource视图里面有Filter可以屏蔽某些无用的目录,
但是里面固化了一些pattern,但是没有也不能增加CVS相关的pattern。

通过Number5同志的努力寻找终于找到解决之道:(适用于Eclipse 3.0.x)

1)关闭eclipse进程;
2)打开eclipse下面的plugins\org.eclipse.jdt.ui_3.0.2
\plugin.xml (其中3.0.2根据你自己eclipse的3.0.x版本修改啦,你
应该没有这么笨的)
3)编辑文件,找到以下一段:

<extension
point=”org.eclipse.ui.ide.resourceFilters”>
<filter
selected=”false”
pattern=”*.class”>
</filter>
</extension>

在下面增加如下一段:

<extension
point=”org.eclipse.ui.ide.resourceFilters”>
<filter
selected=”false”
pattern=”CVS*”>
</filter>
</extension>

保存文件。
4)在命令行运行eclipse -clean,切记一定要加入参数,否则无法清除
原来启动的配置cache的!然后在resource视图中修改Filter,你就看到
CVS*的选项了。

注:如果在eclipse 2.x下面改动,也是类似,只是那段xml有点不同:
\plugins\org.eclipse.ui_2.0.1\plugin.xml

<extension
point=”org.eclipse.ui.resourceFilters”>
<filter
selected=”false”
pattern=”CVS*”>
</filter>
</extension>

但我没有eclispe2的版本,没有证实。

在P4机器上面打Oracle8.1.7.4Patch的问题

——最近要搞Oracle10g的数据库,但是本身有些项目是放在8.1.7上面的,因此本机的
客户端只好装个8.1.7.4的补丁,然后两边都可以连。但是在安装的时候点击setup居然
没有反应。原来是Oracle用的jre118跟P4 CPU的兼容问题,在安装文件目录下面查找
*jit.dll文件,然后删除或者改名,就可以跑那个setup了。

——PS:之后改装Oracle10g的客户端,竟然在分析相关性检查的时候,抛出一个“无
法确定主机IP”的错误,百思不得其解。于是将本机IP由DHCP获得改成自己输入的固
定IP,结果当然是成功啦。我分特,装了大半个下午的Oracle。

我目前在用的Eclipse插件

AnyEdit:编辑器工具,主要做一些字符的增值功能,例如Capitalize,to LowerCase, to UpperCase,还有就是直接将Tab和Space进行互换,行末空格去除。

checkstyle:不用说啦,格式检查必备。

findbugs:也不用说了,检查代码错误必备。

folding:也是编辑器工具,用了这个之后,俺代码里面能折起来的代码块或者注释块都可以折起来了,方便通篇快速阅读啊。

implementors:也是代码查找的好东西,在IDEA里面,我们能够直接在调用代码里面去到实现类的说明那边,eclispe就只能够去到接口的说明那里(N不方便,我看接口那里空空的方法有个P用啊)。这个插件就帮了这个忙,而且还可以找到继承关系的树,那么继承了谁,或者给谁继承了,都可以找出来了。

lomboz:web开发插件,不过用起来有点麻烦不舒服,顶多就是利用一下他本身带的jsp编辑器吧(虽然也是没有所见所得的功能)

quantum:不是量子,也不是以前那个硬盘的牌子。是一个数据库浏览的插件,有时候做疯了,直接在eclipse上面看数据库数据变化还是比慢慢开个数据库客户端要快的。

serialVer:生成serialVersionUID必备工具,你该不会乱做数字或者是用最土的办法先编译class,然后用sun的工具生成数字吧?

tomcat:Tomcat插件,好久没有人更新过了,不过也凑合着用吧,反正现在是最简单的web开发插件和方法了。

xmlbuddy:出名的XML编辑器插件了,不要贪心用xmlbuddy pro或者找破解了,这个free的xmlbuddy,已经足够你基本要求了。Free is the best。

easyexplore:easystruts插件开发小组的一个小工具,可以直接调用本地的文件管理器打开文件所在的本地目录窗口,有用的很啊。

另外还有的就是Together插件和MyEclipse的插件,装在别的地方,不说了。Together用来建模,而MyEclipse功能强大,但是我也没有用他的Web开发或者Struts开发那边的功能,我只是用他来帮我生成Hibernate的DAO和映射文件,寒吧?呵呵呵……

MozBackup !

——用上了FireFox之后真是一发不可收拾,不过大家有没有发现虽然FireFox很灵活,
有很多插件,但是如果你在家里用一套,在公司用一套的话,那么你不得不要在两个地
方都要重新上网找回那些可爱的插件才能两边都用得舒服呢?或者是某天你觉得不爽,
需要重装系统的话,那么你就必须找个备份工具进行这个导入导出了(因为该死的
FireFox不是那么支持你直接的复制文件的)。

——于是乎上网找一把,就找到了MozBackup,一个备份和还原 MozillaMozilla
Firefox
Mozilla Thunderbird Netscape 等软件的用户配置文件的工具。可以帮助
您备份邮件、书签以及其它相关数据。并且它是完全免费的。可惜的只是在今年的年初
他的作者已经决定discontinue这个冬冬的开发了,所以最终版本只是1.4 Final,而且
目前只有For Windows的版本(对于我来说已经够了,嘻嘻……)

——当然各地的有心人,还为MozBackup做了本地化的工作,其中简体中文的版本可以
这里拿。

——最后还是要向已经停止开发的作者致敬的:
原作者: Pavel Cvrcek jasnapaka@jasnapaka.com
主页: http://www.jasnapaka.com/