Java JDBC驱动程序与网桥
我已经在几个应用程序中使用JDBC来查询Derby、PostgreSQL和现在的MySQL数据库。我想我在试图理解引擎盖下到底发生了什么时,被一些基本的术语噎住了。我见过的几个术语:Java JDBC驱动程序与网桥,java,jdbc,odbc,Java,Jdbc,Odbc,我已经在几个应用程序中使用JDBC来查询Derby、PostgreSQL和现在的MySQL数据库。我想我在试图理解引擎盖下到底发生了什么时,被一些基本的术语噎住了。我见过的几个术语: ODBC JDBC驱动程序 桥 JDBC-ODBC桥 对于每一个人,我都尽了最大的努力去挖掘,了解他们是什么,他们做什么,以及他们之间的关系。我相信我已经完成了70%的工作,我只是找不到任何东西(文章、博客、文档等)能很好地将所有事情联系起来,并证实我的怀疑 ODBC似乎是一个C库(可能是DLL?),程序可以使
- ODBC
- JDBC驱动程序
- 桥
- JDBC-ODBC桥
这些司机是什么?他们是干什么的?为什么它们是必要的?另外,如果能澄清我在这里提出的任何其他主张,我将不胜感激。提前谢谢 ODBC和JDBC是等效的。它们都使用驱动程序将ODBC(或JDBC)调用转换为本机数据库命令。ODBC较旧,是用C/C++编写的,而JDBC是用Java编写的。当JDBC问世时,大多数数据库都没有JDBC驱动程序,因此他们创建了JDBC-ODBC驱动程序,以允许人们利用已经可用的ODBC驱动程序。现在很少使用它,因为几乎每个数据库都有一个纯Java JDBC驱动程序
- 你就快到了。好问题
这些驱动程序是什么:纯JDBC驱动程序是用Java编写的驱动程序,不需要ODBC驱动程序即可工作。当您的数据库没有直接的JDBC驱动程序时,您应该只使用ODBC驱动程序(通过JDBC-ODBC桥)(这是非常罕见的,因为现在大多数{if not all}数据库都支持JDBC)
纯JDBC的优点是不需要ODBC。ODBC通常很难配置,需要在系统上安装数据库本机客户端库(如Oracle OCI或Sybase CT库)
过去选择ODBC或本机驱动程序是出于性能原因,但我认为现在纯Java/JDBC的性能几乎与本机/ODBC的性能一样好
它们做什么:与ODBC相同。用于访问关系数据库的标准化JavaAPI
为什么它们是必需的:它们是必需的,因为使用它们更简单,您只需要JDBC库JAR和URL连接。反对:本机客户端库+ODBC驱动程序+JDBC-ODBC配置。同样,每个数据库都有自己的网络协议,用于对其执行查询并返回结果。因此,每个数据库供应商都需要一个驱动程序。它们中的每一个都实现了连接到关系数据库管理器所需的特定协议。如果您所在的世界上所有数据库共享相同的SQL语言和相同的通信协议,那么您只需要一个驱动程序。但这不会很快发生。仅仅因为数据库使用“标准”SQL(这在引号中是有原因的),并不意味着数据库使用相同的低级协议进行通信。SQL只是一种语法,而不是一种协议
Postgres和(比如)Oracle的协议差别很大,提供了不同的功能,尽管它们都使用类似的SQL功能
SQL本身虽然是标准的,但在实现上有很大的差异。例如,MySQL就因为没有其他DBs那么符合SQL而臭名昭著。虽然今天使用的许多SQL都可以跨DBs移植,但也有许多SQL不能移植
JDBC和ODBC是志同道合的。它们提供了一个共享接口,您的应用程序可以使用该接口与RDB通信。它们还提供了供供应商实施的通用模型。这些是司机
供应商实现了一个驱动程序,允许JDBC/ODBC兼容程序与他们的数据库通信。驱动程序任务是将ODBC/JDBC调用转换为数据库的适当SQL或其他控制调用
JDBC/ODBC桥是与现有ODBC驱动程序对话的JDBC驱动程序。真讨厌。不要用它。现在每个值得注意的数据库都有JDBC驱动程序。如果可能的话,请坚持使用“Type4”JDBC驱动程序,因为它们是本机Java驱动程序,而不是使用JNI转换为二进制的“Type2”驱动程序。Buggy类型4驱动程序会给出异常,Buggy类型2驱动程序会导致JVM崩溃,从而导致appserver崩溃。不,谢谢。你说得对;你很快就能了解全貌了 JDBC和ODBC在概念上非常相似。它们都是与数据库交互的框架。JDBC特定于Java,而ODBC特定于Windows。也就是说,JDBC和ODBC实际上都是无牙API。在Java术语中,JDBC实际上是一组未实现的接口。虽然他们指定了一个行为契约,但他们天生就不知道如何与任何特定的数据库通信。这就是司机们进来的地方 让我们具体谈谈JDBC她