百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Java程序员和数据库管理员JDBC问答TOP 50,它们已融进了你的开发灵魂!

sinye56 2024-10-18 13:10 11 浏览 0 评论

1)什么是JDBC?

JDBC代表Java数据库连接。JDBC是与数据库进行通信并执行SQLquery的Java API。

2)什么是JDBC驱动程序和可用的JDBC驱动程序数量?

JDBC驱动程序包含帮助Java应用程序和数据库的类和接口。

有4种类型的JDBC驱动程序。

  • Type 1驱动程序或JDBC-ODBC bridge驱动程序。

  • Type 2驱动程序或Native-API,部分为Java驱动程序。

  • Type 3驱动程序或网络协议,纯Java驱动程序。

  • Type 4驱动程序或本机协议,纯Java驱动程序。

3)如何将MySQL或Oracle与Java连接?

代码说明如下:

Class.forName创建一个JDBC驱动程序实例,并使用DriverManager进行注册。

getConnection()方法始终建立与数据库的连接。

我们需要从上面的连接对象创建一个Statement对象。该语句将返回resultset对象。ResultSet.next()表示如果结果集合仍然返回行。

4)哪个JDBC驱动是最快的驱动程序?

类型4驱动程序或本机协议,纯Java驱动程序,是最快的驱动程序。

5)什么是JDBC API组件?

有四种类型的组件

  • JDBC API

  • JDBC驱动程序管理器

  • JDBC测试套件

  • JDBC-ODBC bridge

6)什么是JDBC statements

有三种类型的JDBC语句,如下所示:

  • statements:它将对数据库执行SQL查询(静态SQL查询)。

  • Prepared Statement:当我们要重复执行SQL语句时使用。输入数据是动态的,并在运行时输入。

  • Callable Statement:当我们要执行存储过程时使用。

7)我们如何执行存储过程?

可以使用JDBCcallable语句执行存储过程。以下是代码:

8)在Java中使用PreparedStatement有什么好处?

Prepared Statement用于重复执行相同的SQL语句。即使使用“n”次,准备好的语句只能编译一次

9)什么是ResultSet?

java.sql.ResultSet接口意味着SQL查询的结果集。这意味着光标指向表的一行;它指向第一行之前。

10)什么是ResultSet的类型?

有三种类型的ResultSet可用。如果我们不声明任何ResultSet,这意味着我们正在调用TYPE_FORWARD_ONLY

  • TYPE_FORWARD_ONLY:游标只能向前移动的类型。

  • TYPE_SCROLL_INSENSITIVE:游标可以前后移动,但对修改不敏感。

  • TYPE_SCROLL_SENSITIVE:游标可以向前和向后移动,但修改敏感

11)解释JDBC中RowSet与ResultSet之间的区别?

在与DB的ResultSet句柄连接中,我们不能将Result作为序列化对象。

由于上述问题,我们无法通过网络传递Resultset。

RowSet扩展了ResultSet接口,因此它保存了ResultSet中的所有方法。RowSet被序列化。

因此,我们可以将Rowset从一个类传递给另一个类,因为它与数据库没有连接。

12)为什么要在JDBC中使用setAutoCommit(false)?

如果要关闭自动提交,请设置connection.setAutoCommit(false)

13)JDBC中的数据库警告是什么?我们如何在JDBC中处理数据库警告?

SQL警告或数据库警告是SQLException类的子类。我们可以通过在Connection,Statement和ResultSet上使用getWarnings()方法处理它

14)我可以得到一个null ResultSet吗?

不,我们不能得到null Resultset。如果下一个记录不包含行,ResultSet.next()可以返回null。

15)元数据是什么意思?为什么我们使用它?

元数据是指有关其他数据的数据或信息。我们使用元数据获取数据库产品版本,驱动程序名称,表和视图的总数。

16)在JDBC中执行executeQuery,executeUpdate有什么区别?

  • execute():它可以用于任何类型的SQL Query。

  • executeQuery():它可以用于select查询。

  • executeUpdate():它可以用于更改/更新表。

17)什么是数据库连接池?使用连接池的优点?

连接池意味着连接将被存储在缓存中,我们将来可以重用它们。

优点:

  • 它更快

  • 连接池变得更容易诊断和分析数据库连接。

18)DriverManager类的功能是什么?

它是用户和驱动程序之间的接口。 DriverManager跟踪数据库和相应驱动程序之间的所有活动。

19)批量更新的含义是什么?

批量更新意味着一次执行一组SQL查询。

批量更新只能用于插入,更新和删除,但不能用于选择查询。

20)JDBC API中有多少包?

JDBC API中提供了两种类型的软件包

  • java.sql

  • javax.sql

21)execute,executeQuery和executeUpdate的返回类型是什么?

  • execute的返回类型是Boolean

  • executeQuery的返回类型是ResultSet对象

  • executeUpdate的返回类型为int

22)结果集(Result Set)的索引以0或1开始?

结果集的索引以1开头。

23)加载驱动程序时Class.forName的作用是什么?

Class.forName创建一个JDBC驱动程序实例,并使用DriverManager进行注册。

24)JDBC-ODBC Bridge是否是多线程?

不,JDBC-ODBC Bridge使用synchronized方法来序列化对ODBC进行的所有调用。

25)哪个接口处理JDBC中的事务管理?

连接接口处理JDBC中的事务管理。它提供了commit(),rollback()等的方法

26)为什么“No suitable driver”错误发生?

当我们调用DriverManager.getConnection方法时,No suitable driver会发生

可能会出现以下原因:

在调用getConnection方法之前无法加载精确的JDBC驱动程序。

它可能是无效或错误的JDBC URL。

27)准备的Statements更快。为什么?

准备的Statements执行比直接执行更快,因为Statements只被编译一次。准备Statements和JDBC驱动程序在执行期间彼此连接,并且没有连接开销。

28)是否可以连接到多个数据库?使用单一statement可以更新还是从两个或三个数据库中提取数据?

是的,可以同时连接到多个数据库,但这取决于具体的驱动程序。

要从不同的数据库更新和提取数据,我们可以使用单个statement。但是我们需要中间件来处理多个数据库或单个数据库。

29)告诉我setMaxRows(int)和SetFetchSize(int)之间的区别?

  • setMaxRows(int):定义每个结果集可以包含多少行

  • SetFetchSize(int):定义将从数据库读取的行数。

30)告诉我特殊字符?

一个特殊字符之前是一个转义字符。比如,SELECT NAME FROM TABLE WHERE NAME LIKE'\ _%'{escape'\'}

31)数据库中“dirty read”的含义是什么?

dirty read意味着“读取可能正确或可能不正确的值”。

32)两段提交是什么意思?

在分布式事务处理中使用两阶段提交。如果任何事务正在执行,并且会影响多个数据库。将使用两阶段提交来使所有数据库彼此同步。

33)JDBC中有多少锁定系统?

JDBC中提供了两种类型的锁定,我们可以处理多个用户。

如果两个用户正在查看相同的记录,则不会进行任何锁定。如果一个用户正在更新记录,并且第二个用户也正在更新相同的记录。那时候我们要用锁。

  • 乐观锁(Optimistic Locking):只有当我们要“更新”时,才会锁定记录。

  • 悲观锁(Pessimistic Locking):它将锁定记录从“选择”来查看,更新和提交时间。

34)JDBC中有什么异常类型?

JDBC中有四种异常类型。

  • batchUpdate异常

  • 数据截断

  • SQL异常

  • SQL警告

35)给出使用JDBC连接数据库的步骤?

使用JDBC连接数据库有两种方法

  • 1.使用DriverManager:

它将在class.forName(驱动程序类)和Class.forName()的帮助下加载驱动程序类。

后加载它将通过控件到DriverManager。

DriverManager.getConnection()将创建连接以访问数据库。

  • 2.使用DataSource:

对于DataSource,无需在JNDI的帮助下使用DriverManager。它将从Naming服务器查找DataSource。 DataSource.getConnection()方法将Connection对象返回给DB。

36)解释JDBC架构?

JDBC API支持数据库的2层和3层模型。

在2层模型中,Java应用程序与数据源进行交互

在3层模式命令中,重定向到服务的“中间层”。之后,命令发送到数据源。

37)JDBC 4.0中有哪些新功能?

新功能是:

  • 通过JDBC驱动程序类自动加载

  • 增强的连接管理

  • 启用RowId SQL

  • 数据集由SQL通过使用注释实现

  • SQL异常处理的增强

  • 支持SQL XML文件

38)JDBC中使用的是什么包?

JDBC中使用8个包:

  • sql.Driver

  • Connection

  • Statement

  • PreparedStatement

  • CallableStatement

  • ResultSet

  • ResultSetMetaData

  • DatabaseMetaData

39)JDBC中有多少RowSet可用?

有两种类型的RowSet可用:

  • 已连接 - 连接的RowSet对象即时连接到数据库。如果应用程序终止,则连接的RowSet对象也将终止。

  • 断开连接 - 断开的RowSet对象在执行所需查询后连接到数据库。

40)连接(Connection)的意思是什么?

连接接口包括与数据库交互的方法。

41)解释JDBC Savepoint?

保存点(Savepoint)表示当前事务可以回滚到的点。而不是将其所有更改转回来,它可以选择仅回滚其中的一些。

42)列出使用DataSource的优点?

数据源是管理员和程序员/开发人员之间的分工。

管理员创建一个DataSource对象并将其绑定到JNDI注册表。程序员/开发人员从注册表中检索DataSource对象。然后它将建立与数据库的连接。

43)为什么我们需要一个JdbcRowSet的原因,就像在ResultSet周围的包装器?

我们可以使用ResultSet对象作为JavaBeans组件。

JdbcRowSet也可以用作JavaBeans组件。这就是为什么它可以在设计或编译时创建和配置,并在运行时执行。

所有jdbcRowSet对象都是可滚动和可更新的。

44)我们可以查看一个结果集(result set)的方式有多少?

有两种方法来查看ResultSet

  • column

  • column index

示例:getInt(String columnName),getInt(int columnIndex)

45)可以更新结果集(result set)有多少种方式?

以下方法可帮助更新result set

  • updateRow()

  • deleteRow()

  • refreshRow()

  • cancelRowUpdates()

  • insertRow()

46)为什么要用Java关闭数据库连接?

作为最佳实践,我们必须关闭resultset,statement和connection 。如果connection来自池,则在关闭时,将连接发送回池以供重用。我们在finally {}块中这样做,因为如果发生任何异常,我们仍然有机会关闭。

47)为什么在JDBC中使用blob数据类型?

这些用于将大量数据存储到数据库中,如图像,电影等。

48)如何在ResultSet中设置属性并发性?

有两个并发级别

CONCUR_READ_ONLY - 仅供阅读。

CONCUR_UPDATABLE - 用于读取和更新。

49)客户端和服务器数据库游标有什么区别?

服务器端游标表示数据和结果保存在服务器上。只有当请求的数据被发送到客户端时。

客户端游标表示发送到客户端位置的所有数据。

50)如何使用JDBC将图像插入数据库?

数据库中的图像使用BLOB数据类型,其中图像作为字节流存储。以下代码显示了如何将图像插入数据库。

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: