正文
Java 数据库连接或 JDBC 是一种 Java API,用于链接和执行与数据库的查询。换句话说,它是Java 平台的应用程序编程接口 (API),有助于交互和执行 SQL 查询。如果您正在寻找软件编程方面的职业,我们建议您阅读我们的 JDBC 面试问题列表。
JDBC 驱动程序用于建立与数据库的连接。JDBC API 有助于访问存储在MySQL、Oracle、MS Access 等关系数据库中的表格数据。JDBC 于 1997 年作为 JDK 1.1 的一部分发布,使其成为最早为Java 语言开发的库之一。
为什么要学习 JDBC?
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 仅适用于关系数据库。
JDBC 连接很昂贵。
您可以将 JDBC 连接到 ODBC,这是一种基于 Microsoft 的规范,供SQL Server和 Access 等数据库使用。
2022 年顶级 JDBC 面试问题和答案
JDBC 是 Java 开发的关键,如果您认真对待编写 Java 应用程序的职业,则必须做好 JDBC 面试问题的准备。以下是您在参加面试之前应该准备的前 30 个问题:
1.解释什么是JDBC?
这是大多数面试中第一个也是最常见的问题之一。JDBC 代表 Java 数据库连接。顾名思义,它是一种 Java API,用于与关系数据库交互,以使用 SQL 访问、修改和处理数据。它利用 JDBC 驱动程序与数据库进行交互。通过使用 JDBC,可以访问来自不同类型关系数据库(如 MySQL、Oracle、MS Access 等)的表格数据。
2.什么是ResultSet?
java.sql.ResultSet 接口用于表示数据库结果集,它是使用Statement 对象执行SQL 查询的结果。ResultSet 的对象包含一个指向结果集中当前数据行的游标。首先,光标显示在第一行之前。然后光标通过执行 next() 方法移动到下一行。next() 方法在 while 循环的支持下遍历结果集。如果没有其他行,则 next() 方法返回 false。以下是创建 ResultSet 的示例:
结果集 rs = con.executeQuery(sqlQuery);
3.你能得到一个空的ResultSet吗?
不,你永远不能得到空的Resultset()。仅当下一条记录不包含行时,ResultSet.next() 才能返回 null。
4. 解释 ResultSet 与 ResultSet 的区别。RowSet 与 JDBC 对比?
在链接到数据库的 ResultSet() 句柄中,不能使 Result 成为序列化对象。因此,您不能通过网络传递Resultset()。RowSet() 扩展了 ResultSet() 接口,因此它包含 ResultSet() 中的所有方法。
RowSet() 总是被序列化的。因此,我们可以将 Rowset() 从一个类传递到另一个类,因为它没有连接到数据库。
5. 什么是 JDBC 驱动程序?
JDBC 驱动程序是具有多个接口和类的软件组件,它使 Java 应用程序能够与数据库进行通信。为了与各个数据库建立链接,JDBC 需要为每个数据库提供特定的驱动程序。这些驱动程序随数据库一起提供给数据库供应商。
JDBC 驱动程序建立到数据库的连接。它还执行用于在数据库和客户端之间发送查询和结果的协议。
6. JDBC中的DriverManager是什么?
JDBC DriverManager 是Java 中的一个静态类,您可以使用它来操作一组可供应用程序使用的 JDBC 驱动程序。如果需要,一个应用程序可以同时使用不同的 JDBC 驱动程序。每个应用程序都使用统一资源定位器 (URL) 指定 JDBC 驱动程序。在将 JDBC Driver 类加载到应用程序中时,它使用 DriverManager.registerDriver() 或 Class.forName() 将自己注册到 DriverManager。要确认这一点,您可以查看 JDBC Driver 类的源代码。在通过传递与数据库配置相关的详细信息调用 DriverManager.getConnection() 方法时,DriverManager 利用注册的驱动程序接收连接并将其返回给调用程序。
7.解释JDBC的不同驱动。
JDBC 中有四种不同的驱动程序。他们是:
- JDBC-ODBC 桥:JDBC-ODBC 桥充当数据库服务器和客户端之间的接口。
- 本机 API:Half Java 驱动程序:此驱动程序的行为几乎与 JDBC-ODBC 驱动程序一样。但是,您使用本机 API 和客户端数据库,而不是 ODBC 驱动程序。
- 网络协议:此驱动程序的工作方式类似于访问数据库的 3 层方法。中间服务器连接到数据库。JDBC 方法调用将数据发送到过渡服务器,然后服务器与数据库进行通信。
- Thin Driver:完全用 Java 编写。此驱动程序将 JDBC 方法调用显式更改为特定于供应商的数据库协议。
8. 解释哪个是最常用和最快的 JDBC 驱动程序。
JDBC Net 纯 Java 驱动程序(Type 4 驱动程序)是用于远程和 localhost 连接的最快和最常用的驱动程序。它通过将 JDBC 调用更改为特定于供应商的协议调用来直接与数据库交互。
9. 数据库表中用于存储图像和文件的数据类型有哪些?
BLOB 数据类型将图像存储在数据库中。您还可以使用此数据类型存储音频和视频。此数据类型存储二进制类型的数据。
CLOB 数据类型将文件存储在数据库中。该数据类型存储字符类型的数据。
10. 解释 DatabaseMetaData 是什么以及为什么要使用它?
DatabaseMetaData 是一个接口,它提供了获取数据库信息的方法。该接口有助于获取数据库相关信息,如数据库名称、驱动程序名称、数据库版本、表或视图的总数等。
11.解释JDBC和ODBC的区别?
J
JDBC(Java 数据库连接) | ODBC(开放式数据库连接) |
JDBC 用于 Java 语言。 | ODBC 可用于 C、C++、Java 等。 |
JDBC可以在任何平台上使用;因此,使其独立于平台。 | ODBC 只能用于 Windows 平台;因此,使其依赖于平台。 |
JDBC 驱动程序是使用 Java 语言开发的。 | 大多数 ODBC 驱动程序是使用 C、C++ 等本地语言开发的 |
JDBC 是 Java 应用程序的理想选择,因为它没有性能问题。 | 不建议将 ODBC 用于 Java 应用程序,因为由于内部转换,它的性能不是很好。 |
JDBC 是面向对象的。 | ODBC 是程序性的。 |
12. 什么是行集?
RowSet 只不过是一个对象,它从表格数据源或 JDBC 结果集(如电子表格或文件)中捕获行集。在事件通知和一组标准属性的帮助下,它支持基于组件的开发模型,例如 JavaBeans。
13.什么是结果集?
java.sql.ResultSet 接口不过是 SQL 查询的结果集。它表示游标指向表格的一行。
14、ResultSet有哪些类型?
ResultSet 共有三种类型:
- TYPE_FORWARD_ONLY:光标只向前移动。
- TYPE_SCROLL_INSENSITIVE:光标可以向后或向前移动,但光标对 ResultSet 基础数据的更改不敏感。
- TYPE_SCROLL_SENSITIVE:光标可以前后移动,但它对 ResultSet 下的数据敏感。
注意:如果我们没有声明任何 ResultSet,那么这意味着我们正在调用 TYPE_FORWARD_ONLY ResultSet。
15. 解释行集的优点。
使用 RowSet 的优点是:
- 它灵活且易于使用。
- 默认情况下它是可更新和可滚动的。
16.解释有什么不同的JDBC语句:
以下是三种类型的 JDBC 语句:
- 语句:对数据库执行 SQL 查询(静态 SQL 查询)。
- Prepared Statement:重复执行一条SQL语句。输入数据是动态的,并在运行时获取输入。
- 可调用语句:执行存储过程。
17. 在 Java 中使用 PreparedStatement 有什么好处?
Prepared Statement 重复执行某些 SQL 语句。该语句仅编译一次,即使它执行了“n”次。
18. 解释术语连接池。
这是另一个流行的 JDBC 面试问题。连接池是我们重用与数据库建立连接所需的类似资源的连接对象的技术。它是一种管理和创建连接池的技术,任何需要它们的线程都可以使用该连接池。每次应用程序尝试访问后端存储(例如数据库)时,它都需要资源来开发、维护和释放与该数据存储的连接。因此,连接池可以极大地提高 Java 应用程序的性能,同时减少总体资源使用量。
19.解释JDBC架构的类型?
使用 JDBC 访问数据库有两种架构模型。
他们是:
- 两层架构:在此模型中,Java 程序专门与数据库连接,不需要任何中介(如应用程序服务器)与数据库连接。此模型也称为客户端-服务器架构。
- 三层架构:此模型与两层架构完全相反。应用服务器用作 Java 程序或 JDBC 驱动程序与数据库之间的中介。Java 程序向应用服务器发送请求。然后服务器将此请求转发到数据库并等待来自数据库的响应。
20. JDBC的主要组件有哪些?
以下是 JDBC 中可用的四个主要组件:
- JDBC 驱动程序管理器
- JDBC API
- JDBC 测试套件
- JDBC – ODBC 桥
21. 连接JDBC的步骤是什么?
以下是用 Java 连接数据库的 6 个基本步骤。
- 导入 JDBC 包。
- 加载并注册 JDBC 驱动程序。
- 打开并建立与数据库的连接。
- 创建一个语句对象来执行查询。
- 执行语句对象并返回查询 ResultSet()。然后处理ResultSet()。
- 关闭 ResultSet() 和语句对象。
- 关闭连接。
22、解释热备份和冷备份的含义。
虽然这个问题与 JDBC 没有直接关系,但仍然可能在面试中被问到。冷回是在重新启动数据库之前进行文件备份的备份过程。在热备份过程中,表和文件的备份是在数据库运行时进行的。
23. 连接JDBC的步骤是什么?
JDBC 中有 2 种类型的锁定可用,我们可以通过它们来管理各种用户问题。如果两个用户尝试访问同一记录,则没有问题,但是当多个用户尝试同时更新同一记录时会出现问题。为了解决这个问题,JDBC 中有两种可用的锁定模式。他们是:
- 乐观锁定:仅在发生更新时锁定记录。这种锁定在读取时不使用排他锁。
- 悲观的锁定:在此系统中,选择要更新的行时,记录被锁定。
24. 说明 JDBC-ODBC 桥是否支持每个连接不同的并发打开语句?
不可以,使用 JDBC-ODBC 桥时,您只能打开一个 Statement 对象。
25. 什么是 JDBC 中的数据库警告并解释我们如何管理 JDBC 中的数据库警告?
数据库警告或 SQL 警告只不过是 SQLException 类的子类。您可以通过对语句、连接和 ResultSet 使用 getWarnings() 方法来管理或处理此警告。
26、解释JDBC中executeQuery、execute、executeUpdate的区别?
- executeQuery():executeQuery() 可用于选择查询。
- execute():execute() 可用于任何类型的 SQL 查询。
- executeUpdate():executeUpdate() 可用于修改/更新表。
27. 解释您所说的元数据是什么意思,并解释我们为什么使用它。
元数据是指有关其他数据的信息。您使用元数据来获取数据库产品版本、驱动程序名称、视图和表的总数。
28. 解释一下为什么要在 JDBC 中使用 setAutoCommit(false)?
setAutoCommit(false) 用于关闭自动提交。
29. 简述加载驱动时Class.forName的作用?
Class.forName 生成一个 JDBC 驱动程序实例和一个向 DriverManager 注册。
30. 为什么准备好的语句更快?
Prepared 语句的执行比直接执行要快得多,因为该语句只编译一次。JDBC驱动和Prepared语句在执行过程中是相互连接的,没有连接开销。