如何使我的java代码能够使用许多数据库和许多操作系统?

时间:2012-08-01 21:45:39

标签: java database jdbc

我想制作java代码,在3-4 DBMS中创建一个示例数据库,如mysql,oracle sql,sql server等安装在任何操作系统上 - windows,Linux发行版,Mac OS等。

如何制作代码:

  1. 自动(或在用户的帮助下)在计算机中找到jdbc驱动程序。
  2. 执行一组固定的sql命令,无论使用何种DBMS,它都能正常工作。
  3. 请建议我如何做所有这些事情。

    编辑: 这将是一种后端应用程序。 我对JDBC有点新,所以我一直在寻找简单/基本的解决方案。 稍后会切换到高级版。

    感谢。

3 个答案:

答案 0 :(得分:3)

  1. 使用您的程序捆绑所有受支持数据库的驱动程序。用户不必处理JDBC驱动程序或连接字符串。 (提供用于编辑后者的UI,这可能在数据库之间有所不同。)
  2. 使用ORM(如Hibernate);或者,如果您不需要使用数据填充数据库,则可以使用数据库迁移库(如Flyway

答案 1 :(得分:2)

1,见这里...... How to use a JDBC driver from an arbitrary location

2,不同的DBMS使用相似但不相同的语法。您至少有3个选项:

  • 仅使用您感兴趣的所有DBMS支持的sql命令;

  • 嗅探DBMS并相应地修改SQL语句;

  • 使用SQL抽象层附带的框架(例如Java Persistence API的JPQL)。我怀疑这对你所追求的事情来说可能太过分了。

答案 2 :(得分:0)

如果您想让用户找到JDBC驱动程序,那么您应该处理ClassLoaders并实现自定义ClassLoader,这不是一件简单的事情。或者你应该使用一个应用程序服务器来处理你的。

否则,您将在类路径中使用所有JDBC驱动程序。

顺便说一句,JDBC是一个适用于处理SQL的大多数RDBMS的适配器,每个数据库提供程序都为其SQL提供了特定于供应商的自定义。例如,您在Oracle中有序列,在MySQL中有自动编号。或者,您可以在MySQL查询中使用limit,这在Oracle中是不可用的。这个问题的解决方案是做Hibernate所做的事情(使用方言处理数据库供应商特定的东西。)