• 2005年09月08日

    操作dbf的类库

    Tag:DB Java j2se
    操作DBF文件的类库建议采用javadbf。

    名称为javadbf的开源项目有两个,一个是
    http://javadbf.dev.java.net,因为这个项目缺少文档而代码注释不知是何国鸟语,故不选;另一个是http://sarovar.org/projects/javadbf/,印度人的开源项目,文档完备,注释多到冗余,在http://sarovar.org上下载次数排第6,LGPL。

    通过对一些dbf文件进行读写测试,印度人的这个项目完全符合我们项目的需要。我们将采用此javadbf作为操作dbf的工具。
  • 2005年08月20日

    Sync4j的相关新项目

    Tag:Java
    一个是Sync4j Evolution Synchronizer,这个是同步evolution(Linux下的邮件客户端软件?)和Sync4j服务器的evolution插件,目前还没必要关注。

    另一个是
    Sync4j Connector for LDAP,这个是Sync4j服务器的一个插件,有了它,Sync4j设备就可以和LDAP同步了。这个需要关注它的开发进度。
  • 2005年07月16日

    产生GUID的Java工具类

    Tag:Java
    我们现在项目用的产生GUID的工具类来自http://www.doomdark.org/doomdark/proj/jug,不过看的源码多了,发现产生GUID的代码满大街都是,随手拿起一个框架之类的,都有自己的工具类产生UUID,如Appfuse的RandomGUID,jodd(生不逢时、定位不准的poor guy,其实有些代码还是不错的)UuidGenerator等等
  • 早上在JavaEye看到Robbin说:
    引用:

    DBCP的bug非常多,因此Hibernate3已经不再支持DBCP连接池,而推荐使用C3PO。建议你更换数据库连接池。


    然后跑去Hibernate官方论坛看,果然,在Please migrate away from DBCP看到Gavin说:
    引用:
    Guys, after many problems with DBCP, I have decided to remove built-in support for DBCP from Hibernate3, and deprecate DBCP in Hibernate 2.1. I advise everyone to migrate away from DBCP to something that actually works, like C3P0 or Proxool.

    (If you /must/ use DBCP, you can always write your own connection provider.)

    Actually, it is probably about time we remove any remaining dependencies to Apache commons stuff, since historically they have caused just /so/ much trouble. The only Apache things that do seem to work very well are Ant and log4j. Even commons-logging is a PIA, especially in Tomcat.


    这个台湾Guy也是如此建议
    引用:
    挑選觀念: 是否認為 jakarta 是唯一選擇
    是的話, 採用 commons-dbcp ; 不是的話, 採用 proxool / c3p0


    Jakarta-commons社区对Hibernate官方不支持DBCP的应对:
    http://wiki.apache.org/jakarta-commons/DBCP/Hibernate
  • 今早发现以前检测数据库里是否存在某个表的代码(见下面)居然没有效果了,检查后发现代码一点都没有变,就怀疑是mysql的jdbc驱动问题(曾经有过与驱动相关的郁闷经历),把驱动从mysql-connector-java-3.1.8-bin.jar换成mysql-connector-java-3.0.16-ga-bin.jar,结果一切ok。
    mysql的jdbc驱动真不能让人放心,不知道什么时候在什么地方就会出问题。

    // 获取数据库的元数据

    DatabaseMetaData dma=conn.getMetaData();

    // 将数据库中的表的名称转储出来

    String[] types=new String[]{"TABLES"}; // 设置查询类型

    // 请注意通配符是 % 符号(而不是“*”)

    ResultSet results=dma.getTable(null,null,"%",types);

    while(results.next())

    {

      String tableName=results.getString("TABLE_NAME");

    System.out.println(tableName);

    }