源代码级别和可执行级别的DBMS独立性意味着什么?

时间:2018-01-04 17:21:48

标签: database jdbc

来自数据库管理系统,作者:Raghu Ramakrishnan,Johannes Gehrk

  

与嵌入式SQL相比, ODBC和JDBC允许单个   可执行文件以访问不同的DBMS而无需重新编译。   因此,虽然嵌入式SQL仅在源上与DBMS无关   代码级别,使用ODBC或JDBC的应用程序与DBMS无关   在源代码级别和在可执行文件级别

使用JDBC的应用程序只能访问源代码中指定的DBMS。

,我想知道这意味着什么
  • " ODBC和JDBC允许单个可执行文件访问不同的DBMS而无需重新编译"?

  • DBMS独立"源代码级别"和"在可执行文件的级别"?

2 个答案:

答案 0 :(得分:1)

使用JDBC时,通常使用数据库URL,用户名和密码的配置来定义数据库。所以你真的不需要重新编译,只需要切换你可以连接的配置,例如开发和生产DB。

在编译JDBC程序时,不访问数据库,在编译时甚至可能不存在数据库。

嵌入式SQL 相反,例如 SQLJ (我不确定嵌入式SQL现在有多少相关; SQLJ在SO上有37个标记的问题),同时编译访问数据库以检查相关表等 - 请参阅here

因此,切换到其他DB(或者甚至在同一个DB中的结构更改之后)必须重新编译程序。

这是我对引言试图说的内容的解释。让我得出结论,在DBMS独立性下,通常意味着可能在不同的DBMS(例如Oracle和MySQL)之间进行切换,这在此上下文中绝对不相关。

答案 1 :(得分:1)

ODBCJDBC都是与DBMS无关的API。在编写ODBC或JDBC应用程序时,您不需要了解有关最终目标DBMS的任何信息 - 事实上,那些目标DBMS可能甚至还不存在!

使用符合ODBC或JDBC的应用程序,更改目标DBMS就像更改连接的ODBC DSN或JDBC URL一样简单。

许多应用程序开发人员使用ODBC或JDBC作为数据访问机制来创建特定于DBMS的应用程序,忽略ODBC和JDBC API的DBMS无关方面,而是选择使用特定于DBMS的SQL方言。

由于这种特殊性,这些应用程序实际上并不符合ODBC / JDBC标准,尽管它们通常都是这样的。

你说 -

  

使用JDBC的应用程序只能访问源代码中指定的DBMS。

绝对不是这样。我建议你进一步阅读,从上面的链接开始。