JDBC 驱动程序用于建立与数据库的连接。JDBC API 有助于访问存储在MySQL、Oracle、MS Access 等关系数据库中的表格数据。JDBC 于 1997 年作为 JDK 1.1 的一部分发布,使其成为最早为Java 语言开发的库之一。
JDBC 是编写实际Java 应用程序的关键。由于数据是任何应用程序的重要组成部分,而 JDBC 是在 Java 应用程序中处理数据的基本方式,因此良好的 JDBC 知识和专业知识可以为Java 开发人员提供竞争优势。以前,ODBC API 是与数据库交互和运行查询的数据库 API。但是,ODBC API 将C 语言用于不安全且依赖于平台的 ODBC 驱动程序。因此,Java 定义了自己的 JDBC API。该 API 使用 JDBC 驱动程序,该驱动程序提供了一个 Java 接口,用于通过SQL 与数据库进行交互。需要 JDBC 来提供“纯 Java”解决方案来使用 Java 编程开发应用程序。以下是一些您应该知道的有关 JDBC 的有趣事实:
JDBC 是 Java 开发的关键,如果您认真对待编写 Java 应用程序的职业,则必须做好 JDBC 面试问题的准备。以下是您在参加面试之前应该准备的前 30 个问题:
这是大多数面试中第一个也是最常见的问题之一。JDBC 代表 Java 数据库连接。顾名思义,它是一种 Java API,用于与关系数据库交互,以使用 SQL 访问、修改和处理数据。它利用 JDBC 驱动程序与数据库进行交互。通过使用 JDBC,可以访问来自不同类型关系数据库(如 MySQL、Oracle、MS Access 等)的表格数据。
java.sql.ResultSet 接口用于表示数据库结果集,它是使用Statement 对象执行SQL 查询的结果。ResultSet 的对象包含一个指向结果集中当前数据行的游标。首先,光标显示在第一行之前。然后光标通过执行 next() 方法移动到下一行。next() 方法在 while 循环的支持下遍历结果集。如果没有其他行,则 next() 方法返回 false。以下是创建 ResultSet 的示例:
结果集 rs = con.executeQuery(sqlQuery);
不,你永远不能得到空的Resultset()。仅当下一条记录不包含行时,ResultSet.next() 才能返回 null。
在链接到数据库的 ResultSet() 句柄中,不能使 Result 成为序列化对象。因此,您不能通过网络传递Resultset()。RowSet() 扩展了 ResultSet() 接口,因此它包含 ResultSet() 中的所有方法。
RowSet() 总是被序列化的。因此,我们可以将 Rowset() 从一个类传递到另一个类,因为它没有连接到数据库。
JDBC 驱动程序是具有多个接口和类的软件组件,它使 Java 应用程序能够与数据库进行通信。为了与各个数据库建立链接,JDBC 需要为每个数据库提供特定的驱动程序。这些驱动程序随数据库一起提供给数据库供应商。
JDBC 驱动程序建立到数据库的连接。它还执行用于在数据库和客户端之间发送查询和结果的协议。
JDBC DriverManager 是Java 中的一个静态类,您可以使用它来操作一组可供应用程序使用的 JDBC 驱动程序。如果需要,一个应用程序可以同时使用不同的 JDBC 驱动程序。每个应用程序都使用统一资源定位器 (URL) 指定 JDBC 驱动程序。在将 JDBC Driver 类加载到应用程序中时,它使用 DriverManager.registerDriver() 或 Class.forName() 将自己注册到 DriverManager。要确认这一点,您可以查看 JDBC Driver 类的源代码。在通过传递与数据库配置相关的详细信息调用 DriverManager.getConnection() 方法时,DriverManager 利用注册的驱动程序接收连接并将其返回给调用程序。
JDBC 中有四种不同的驱动程序。他们是:
JDBC Net 纯 Java 驱动程序(Type 4 驱动程序)是用于远程和 localhost 连接的最快和最常用的驱动程序。它通过将 JDBC 调用更改为特定于供应商的协议调用来直接与数据库交互。
DatabaseMetaData 是一个接口,它提供了获取数据库信息的方法。该接口有助于获取数据库相关信息,如数据库名称、驱动程序名称、数据库版本、表或视图的总数等。
| JDBC(Java 数据库连接) | ODBC(开放式数据库连接) |
|---|---|
| JDBC 用于 Java 语言。 | ODBC 可用于 C、C++、Java 等。 |
| JDBC可以在任何平台上使用;因此,使其独立于平台。 | ODBC 只能用于 Windows 平台;因此,使其依赖于平台。 |
| JDBC 驱动程序是使用 Java 语言开发的。 | 大多数 ODBC 驱动程序是使用 C、C++ 等本地语言开发的 |
| JDBC 是 Java 应用程序的理想选择,因为它没有性能问题。 | 不建议将 ODBC 用于 Java 应用程序,因为由于内部转换,它的性能不是很好。 |
| JDBC 是面向对象的。 | ODBC 是程序性的。 |
RowSet 只不过是一个对象,它从表格数据源或 JDBC 结果集(如电子表格或文件)中捕获行集。在事件通知和一组标准属性的帮助下,它支持基于组件的开发模型,例如 JavaBeans。
java.sql.ResultSet 接口不过是 SQL 查询的结果集。它表示游标指向表格的一行。
ResultSet 共有三种类型:
注意:如果我们没有声明任何 ResultSet,那么这意味着我们正在调用 TYPE_FORWARD_ONLY ResultSet。
使用 RowSet 的优点是:
以下是三种类型的 JDBC 语句:
Prepared Statement 重复执行某些 SQL 语句。该语句仅编译一次,即使它执行了“n”次。
这是另一个流行的 JDBC 面试问题。连接池是我们重用与数据库建立连接所需的类似资源的连接对象的技术。它是一种管理和创建连接池的技术,任何需要它们的线程都可以使用该连接池。每次应用程序尝试访问后端存储(例如数据库)时,它都需要资源来开发、维护和释放与该数据存储的连接。因此,连接池可以极大地提高 Java 应用程序的性能,同时减少总体资源使用量。
使用 JDBC 访问数据库有两种架构模型。
他们是:
以下是 JDBC 中可用的四个主要组件:
以下是用 Java 连接数据库的 6 个基本步骤。
虽然这个问题与 JDBC 没有直接关系,但仍然可能在面试中被问到。冷回是在重新启动数据库之前进行文件备份的备份过程。在热备份过程中,表和文件的备份是在数据库运行时进行的。
JDBC 中有 2 种类型的锁定可用,我们可以通过它们来管理各种用户问题。如果两个用户尝试访问同一记录,则没有问题,但是当多个用户尝试同时更新同一记录时会出现问题。为了解决这个问题,JDBC 中有两种可用的锁定模式。他们是:
不可以,使用 JDBC-ODBC 桥时,您只能打开一个 Statement 对象。
数据库警告或 SQL 警告只不过是 SQLException 类的子类。您可以通过对语句、连接和 ResultSet 使用 getWarnings() 方法来管理或处理此警告。
元数据是指有关其他数据的信息。您使用元数据来获取数据库产品版本、驱动程序名称、视图和表的总数。
setAutoCommit(false) 用于关闭自动提交。
Class.forName 生成一个 JDBC 驱动程序实例和一个向 DriverManager 注册。
Prepared 语句的执行比直接执行要快得多,因为该语句只编译一次。JDBC驱动和Prepared语句在执行过程中是相互连接的,没有连接开销。
文章到这里就讲完了,我是一位专门研究互联网前沿技术的博主,以后会推出更多干货文章,希望看到这里的小伙伴能够关注、点赞、评论,你们的支持就是我创作的最大动力!