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

Database DBMS在源代码级别和可执行文件级别的独立性意味着什么?,database,jdbc,Database,Jdbc,来自Raghu Ramakrishnan的数据库管理系统,‎约翰内斯·盖尔克 与嵌入式SQL不同,ODBC和JDBC允许单个 无需重新编译即可访问不同DBMS的可执行文件。 因此,虽然嵌入式SQL仅在源位置独立于DBMS 在代码级别,使用ODBC或JDBC的应用程序与DBMS无关 在源代码级别和可执行文件级别 使用JDBC的应用程序只能访问源代码中指定的DBMS。所以我想知道这是什么意思 “ODBC和JDBC允许单个可执行文件访问不同的DBMS而无需重新编译” DBMS独立于“在源代码级别”和

来自Raghu Ramakrishnan的数据库管理系统,‎约翰内斯·盖尔克

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

使用JDBC的应用程序只能访问源代码中指定的DBMS。所以我想知道这是什么意思

  • “ODBC和JDBC允许单个可执行文件访问不同的DBMS而无需重新编译”

  • DBMS独立于“在源代码级别”和“在可执行文件级别”


在使用JDBC时,通常使用数据库url、用户名和密码的配置来定义数据库。因此,您确实不需要重新编译,只需切换您可以连接的配置,例如连接到开发和生产数据库

在编译JDBC程序时,数据库没有被访问,这可能是因为在编译时数据库甚至不存在

与之相反,在诸如SQLJ之类的嵌入式SQL中(我不确定现在有多少嵌入式SQL是相关的;SQLJ有37个标记问题),编译数据库时会被访问以检查相关表等-请参阅

因此,切换到其他数据库(甚至在同一数据库中的结构发生变化后)必须重新编译程序


这是我对这段引文的解释。让我总结一下,在DBMS独立性下,通常意味着在不同的DBMS(如Oracle和MySQL)之间可能进行切换,这在本文中是不相关的

在使用JDBC时,通常使用数据库url、用户名和密码的配置来定义数据库。因此,您确实不需要重新编译,只需切换您可以连接的配置,例如连接到开发和生产数据库

在编译JDBC程序时,数据库没有被访问,这可能是因为在编译时数据库甚至不存在

与之相反,在诸如SQLJ之类的嵌入式SQL中(我不确定现在有多少嵌入式SQL是相关的;SQLJ有37个标记问题),编译数据库时会被访问以检查相关表等-请参阅

因此,切换到其他数据库(甚至在同一数据库中的结构发生变化后)必须重新编译程序

这是我对这段引文的解释。让我总结一下,在DBMS独立性下,通常意味着在不同的DBMS(如Oracle和MySQL)之间可能进行切换,这在本文中是不相关的

和都是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

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

两者都是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


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

谢谢。
getConnection(databaseUrl)
DBMS依赖吗?不。JDBC合规性只适用于驱动程序,不适用于使用驱动程序的应用程序。@markrotVeel-这完全是一个误解。如果我提供一个JDBC兼容的工具,我断言它可以用于任何具有JDBC兼容驱动程序的DBMS。如果我的应用程序是特定于MySQL、特定于Oracle或任何其他特定于DBMS的,则它不能正确地称为JDBC兼容,即使它使用JDBC连接到它所运行的DBMS。@Talled,那么从技术上讲,您使用的术语是错误的(是的,我知道这是吹毛求疵)。使用术语JDBC compliant表明您满足JDBC规范的要求,但JDBC规范仅描述驱动程序的要求和行为,并提供了一个TCK来测试遵从性。对于应用程序本身没有描述的要求。谢谢。
getConnection(databaseUrl)
DBMS依赖吗?不。JDBC合规性只适用于驱动程序,不适用于使用驱动程序的应用程序。@markrotVeel-这完全是一个误解。如果我提供一个JDBC兼容的工具,我断言它可以用于任何具有JDBC兼容驱动程序的DBMS。如果我的应用程序是MySQL指定的