Java数据库连接JDBC基础问答50例,Java程序员和数据库管理员必备
mhr18 2024-09-15 21:48 20 浏览 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数据类型,其中图像作为字节流存储。以下代码显示了如何将图像插入数据库。
相关推荐
- C++开发必知的内存问题及常用的解决方法-经典文章
-
1.内存管理功能问题由于C++语言对内存有主动控制权,内存使用灵活和效率高,但代价是不小心使用就会导致以下内存错误:omemoryoverrun:写内存越界odoublefree:同一块内...
- 缓存用不好,系统崩得早!10条军规让你成为缓存高手
-
凌晨三点,我被电话惊醒:“苏工!首页崩了!”监控显示:缓存命中率0%,数据库QPS10万+,线程阻塞2000+。根本原因竟是同事没加缓存!不会用缓存的程序员,就像不会刹车的赛车手——...
- 彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏
-
作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成...
- Java中间件-Memcached(Java中间件大全)
-
一、知识结构及面试题目分析缓存技术的大规模使用是互联网架构区别于传统IT技术最大的地方,是整体高并发高性能架构设计中是重中之重的关键一笔,也是互联网公司比较偏好的面试题目。按照在软件系统中所处位置...
- linux内存碎片防治技术(linux内存碎片整理)
-
推荐视频:90分钟了解Linux内存架构,numa的优势,slab的实现,vmalloc原理剖析Linux内核内存分配与回收Linuxkernel组织管理物理内存的方式是buddysystem(伙...
- Redis主从架构详解(redis主从配置详细过程)
-
Redis主从架构搭建Redis主节点配置创建主节点目录(/opt/redis-master),复制redis.conf到该目录下,redis.conf配置项修改#后台启动daemonizeyes...
- 揭开CXL内存的神秘面纱(内存c1)
-
摘要:现代数据中心对内存容量的高需求促进了内存扩展和分解方面的多条创新线,其中一项获得极大关注的工作是基于ComputeeXpressLink(CXL)的内存扩展。为了更好地利用CXL,研究人员建...
- 一文彻底弄懂 TPS RPS QPS(tps cps)
-
以下是关于RPS、QPS、TPS的核心区别与关联的总结,结合实际场景和优化建议:一、核心定义与区别RPS:RequestsPerSecond每秒请求数客户端到服务器的完整请求数量Web服务...
- 用Redis的“集合”找出你和朋友的“共同关注”
-
你是不是在刷抖音、微博、小红书的时候,常常会看到这样的提示:“你和XXX有共同关注的博主/朋友”?或者当你关注了一个新的明星,系统会推荐“你的朋友YYY也关注了这位明星”?这个看似简单的功能背后,其实...
- WOT2016彭哲夫:科班出身开发者对运维人员的期许
-
“运维与开发”是老生常谈的话题,前几天和一个运维人聊天,TA说一些公司运维岗位都不公开招聘了,这让众多运维人员情何以堪?是运维的岗位真的饱和了?是找到合适的运维人才难?还是有这样那样的因素?带着这些疑...
- Java程序员最常用的20%技术总结(java程序员要掌握什么)
-
我听说编程语言,经常使用的是其中20%的技术。在Java这门语言中,这20%包括哪些内容?找到一份Java初级程序员的工作,有哪些是必须掌握的,有哪些是可以现学现卖的?一个完整的Javaweb项目,有...
- 秒杀系统实战(四)| 缓存与数据库双写一致性实战
-
前言微笑挖坑,努力填坑。————已经拥有黑眼圈,但还没学会小猪老师时间管理学的蛮三刀同学本文是秒杀系统的第四篇,我们来讨论秒杀系统中「缓存热点数据」的问题,进一步延伸到数据库和缓存的...
- 头条评论精灵翻牌子(头条评论精灵翻牌子怎么弄)
-
关于“头条评论精灵翻牌子”功能,这通常是指平台通过算法或运营手段,将用户的优质评论随机或定向推送到更显眼的位置(如信息流顶部、独立曝光位等),以提升互动率和用户参与感。以下是详细解析和建议:一、功能理...
- 15个程序员们都应该知道的大模型高级提示词指令模板和示例
-
作为程序员你如何写大模型指令?你写的指令是不是更专业呢?下面是15个程序员使用的专业的大模型指令,如果早知道可以能节省你很多时间。这些指令可以用在chatgpt,deepseek等大模型。1.一键...
- MyBatis-Plus内置的主键生成策略有大坑,要注意!
-
昨天小伙伴使用Mybaits-Plus开发的项目线上(集群、K8S)出现了主键重复问题,其报错如下:Mybatis-Plus启动时会通过com.baomidou.mybatisplus.core.to...
你 发表评论:
欢迎- 一周热门
-
-
Redis客户端 Jedis 与 Lettuce
-
高并发架构系列:Redis并发竞争key的解决方案详解
-
redis如何防止并发(redis如何防止高并发)
-
开源推荐:如何实现的一个高性能 Redis 服务器
-
redis安装与调优部署文档(WinServer)
-
Redis 入门 - 安装最全讲解(Windows、Linux、Docker)
-
一文带你了解 Redis 的发布与订阅的底层原理
-
Redis如何应对并发访问(redis控制并发量)
-
oracle数据库查询Sql语句是否使用索引及常见的索引失效的情况
-
Java SE Development Kit 8u441下载地址【windows版本】
-
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)