如果是增/删/改/查/存储过程调用, 符合SQL92标准的, 基本上都通用, mssql/sybase/informix/db2/oracle偶都测试过, 没有问题. 如果用到特殊的语法, 如oracle的包, 这些就比较麻烦了, 应该是没有的

解决方案 »

  1.   

    因为如果手写SQL的话,没办法控制开发人员的开发行为,如使Oracle 使用(+),而不是使用left join/right join来表示组左/右关联,或者在MSSQL使用Top,而没办法在Oracle运行等等,
    为了避免手写SQL带来未来数据库迁移的麻烦,希望能有一套完善的SQLEngine机制,提供针对各种主流数据库语法特性的,给出通用的实现API,如果外部指定数据库Dialect 就可以生成特定语法的SQL,如分页,关联查询,特定数据库函数,调用如:
    SQLEngine se=new SQLEngine();
    se.query(tableName,[where]);
    se.update(……)
    se.leftJoin(……)
    se.orderBy(……)
    se.pagination(……)如此,开发人员写出的任何SQL都可以在任意数据库使用,而不需要去实现OracleDAO,MSSQLDAO……
      

  2.   

    其实类似Hibernate的一些SQL语法生成机制
      

  3.   

    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=33912&messageID=199639#199639
      

  4.   

    确实的说,没有这种工具,从MDA方面的资料可以得到很好的认证,你的想法就是平台无关性,而到具体的数据库就是平台相关性。中间需要一个转化。在AndroMDA中处理的方式是不用的用配置文件来映射各个具体数据库的个性,然后通过引擎来各自处理
      

  5.   

    不想用也可以看看HIBERNATE的源代码咯