JDBC提供了一个API,可用于连接到不同的RDBMS或类似的数据存储。但是数据存储区的实现方式不同(例如SQL方言)。
是否可以以这种方式使用JDBC,我的查询和语句适用于大多数常见的RDBMS(例如:Oracle,PostgreSQL,SQL Server,MySQL)?
这个问题在两个方面对我来说很有意思: *通用SQL(INSERT,UPDATE,SELECT等) *访问元数据(获取有关表和列的信息)
我目前正在尝试使用自编写的持久性框架,并希望在其下插入JDBC数据存储区。因此,如果我编写一个JDBC数据存储区适配器,如果它可以在大多数常见的RDBMS上运行,那就太好了。
提前致谢
答案 0 :(得分:5)
JDBC 是RDBMS的抽象层。
不幸的是,正如您在问题中已经认识到的那样,抽象漏洞。
如果你坚持使用所有RDBMS共有的SQL和元数据的小部分,你会没事的。但实际上,你很可能快速超出这些限制。
答案 1 :(得分:2)
不,这是不可能的,因为它们有两个完全不同的用途。
JDBC是DBMS 通信协议的抽象,而SQL是一种查询语言。
使用该通信协议将用SQL编写的查询发送到服务器,然后通过该协议返回查询结果(以DBMS独立方式)。
通信协议与查询之间似乎存在模糊界限,因为JDBC API还指定了从服务器(或结果)检索元数据的调用。但实际上司机可以自由使用任何认为合适的交通工具。这不一定是SQL查询。
答案 2 :(得分:1)
JDBC充当RDBMS的抽象,大致与SQL相同:基本查询足够兼容,但您不断遇到只能使用特定于供应商的功能实现的需求: