有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。 
使用Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute ,传递一些sql语句,这些sql语句都是符合各个数据库语法的,怎么可能一次编写,到处运行呢?比如oracle的对时间的处理函数有to_date ,而mysql 就是date_format了.

解决方案 »

  1.   

    这个你还真没法,最简单的驱动,用户名能一样?mysql的root,sqlserver的sa,除非你仿照hibernte,写个配置文件,配置文件中配置密码,用户名,url,驱动,指定数据库方言,java代码中实现各种数据库
      

  2.   

    楼主只是举例了函数,其实即便是SQL语句,不同数据库支持的能力都不一样。有些支持分页 limit,有些支持父子连接,有些支持匿名嵌套子查询。
    绝对意义的跨平台是不存在的。不过仅就函数而言的话,为了减轻移植工作,你可以适当的重写这些函数。
      

  3.   

    认真的话你就输了。 一次编写处处运行的真正含义是java的虚拟机机制可以让你不关心底层的操作系统(windows/linux等等),直接使用统一的api来保证程序的可移植性。不同数据库有它们各自所支持的函数、特性等。这个不归java管
      

  4.   

    有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。
    看来这句话,根本就站不住脚嘛!
      

  5.   

    同样的如果在hibernate中使用各种原生的SQL语句,也不能实现跨数据库的。如果更换数据库,程序也是需要再改写的。除非使用hibernate对象代替对表的操作,那样性能上就会有损失。最典型的就是批量处理数据。hibernate的批量处理,就明显不如jdbc的批处理。有没有好办法,使用hibernate 自身的api做批处理也高效的方法/
      

  6.   

    通用性必然以能效为代价。取舍而已。你可以用绝对标准的SQL93语法来实现整个系统,从而得到跨平台性,代价就是各类如分页等的好处你就统统的只能干瞪眼了。
      

  7.   

    要覆盖所有数据库估计很难的,但如果仅仅是为一个数据库设计,那还剩很容易的jdbc API很好用的,网上这样的实例也很多啊
      

  8.   

    LZ你理解错了
    人家的意思是API统一,至于sql语句那要看各个厂商的了,
      

  9.   


    朋友 我那个ADT和ADK的问题OK了。~~~还是搞手机好玩!!
      

  10.   

    楼上们都说的很好。
    都是我的见解。
    不过话说回来。哪个公司会没事平凡的换数据库?
    说跨平台那是SUN开始为了占领小型电子市场,存在很多不同平台而开发
    的java但是JDBC这个东西。其实还是操作的数据库。执行的SQL,
    数据库厂商们没有跨平台呀。还有楼主给分记得给几分给我呀。
    哈哈。