来自数据库管理系统,作者:Raghu Ramakrishnan,Johannes Gehrk
与嵌入式SQL相比, ODBC和JDBC允许单个 可执行文件以访问不同的DBMS而无需重新编译。 因此,虽然嵌入式SQL仅在源上与DBMS无关 代码级别,使用ODBC或JDBC的应用程序与DBMS无关 在源代码级别和在可执行文件级别。
使用JDBC的应用程序只能访问源代码中指定的DBMS。
,我想知道这意味着什么" ODBC和JDBC允许单个可执行文件访问不同的DBMS而无需重新编译"?
DBMS独立"源代码级别"和"在可执行文件的级别"?
答案 0 :(得分:1)
使用JDBC时,通常使用数据库URL,用户名和密码的配置来定义数据库。所以你真的不需要重新编译,只需要切换你可以连接的配置,例如开发和生产DB。
在编译JDBC程序时,不访问数据库,在编译时甚至可能不存在数据库。
与嵌入式SQL 相反,例如 SQLJ (我不确定嵌入式SQL现在有多少相关; SQLJ在SO上有37个标记的问题),同时编译访问数据库以检查相关表等 - 请参阅here。
因此,切换到其他DB(或者甚至在同一个DB中的结构更改之后)必须重新编译程序。
这是我对引言试图说的内容的解释。让我得出结论,在DBMS独立性下,通常意味着可能在不同的DBMS(例如Oracle和MySQL)之间进行切换,这在此上下文中绝对不相关。
答案 1 :(得分:1)
ODBC和JDBC都是与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。
绝对不是这样。我建议你进一步阅读,从上面的链接开始。