资讯动态

Java连接MySQL数据库,读取、遍历输出数据库查询结果ResultSet、使用“Class.forName(JDBC_DRIVER);”来注册加载驱动的原因

发布时间:2026/9/2 13:29:26 来源:尧图企业网站定制
Java连接、操作MySQL数据库MySQL数据库简介Java对于数据库常用操作的封装连接、操作MySQL数据库用到的类Statement与数据库连接(Connection)Java工程 连接、操作数据库Class.forName(JDBC_DRIVER);来注册加载驱动的原因遍历输出MySQL查询结果java.sql.ResultSet完整代码示例Java工程 通过连接池实现连接、操作数据库MySQL数据库简介此处先给出MySQL官网?Java对于数据库常用操作的封装Java通过提供统一API定义的方式来实现对各种数据库进行操作时Java代码编码层面的统一,有效减少了Java代码在跨数据库时——Java项目在数据库需要变更时需要修改代码的问题。这样做的好处是显而易见的,①使操作不同的数据库在Java层面得到了统一,有利于Java项目实现跨数据库,当然变更数据库时,项目中要导入对应数据库的jar包②淡化不同数据库版本在Java代码中的差异,从而进一步突出Java项目中的业务逻辑。在使用Java的时候,不用关心底层使用什么数据库,只需要关心业务逻辑即可。API的具体实现由各数据库厂商自己提供(jar包,以驱动的形式)。在使用的时候,只需在自己的项目中导入对应数据库驱动的jar包即可,示意图如下所示。目前常用的数据库种类很多,比如常见的MySQL、Oracle、SqlServer、Sqlite… 这些数据库都有自己的特性,如果Java为每一种数据库开发一套API,进行数据库操作,那么将是很头疼的,原因如下:1、每一种数据库都有差异,那么就代表每一套API的使用方法可能都不同;2、不便于数据库迁移,比如,前期使用MySQL,到后期发现Oracle更加适合项目,于是将数据从MySQL迁移到Oracle中了,因为API不同,所以需要重新修改所有的SQL操作。3、除此之外,这么多套API,维护起来也是很麻烦的;连接、操作MySQL数据库用到的类连接操作数据库过程中会用到的类,如下图所示。Statement与数据库连接(Connection)数据库连接(java.sql.Connection):代表应用程序与数据库服务器之间的物理或逻辑网络连接会话。层级‌:最高层级。它是进行任何数据库操作的前提。代价‌:创建和销毁 Connection 非常昂贵(涉及 TCP 握手、身份验证等),因此通常使用‌连接池‌(如 HikariCP, Druid)来管理,避免频繁创建。Statement:代表一条特定的 SQL 语句对象,用于向数据库发送 SQL 命令并接收结果。它必须依附于某个 Connection存在。层级‌:中间层级。一个 Connection 可以同时创建多个 Statement。代价‌:创建 Statement 相对轻量,但依然涉及数据库端的资源分配(如解析 SQL、生成执行计划、占用游标等)。频繁创建和关闭 Statement 也会带来开销。Java工程 连接、操作数据库下面每一行代码的含义补入本文 三、补入本文,好好看!首先将jar包mysql-connector-java-8.0.30.jar导入Java工程的正确位置,通常在lib目录下。Java工程导入jar包的方法详见这篇博客。设置JDBC驱动名和数据库URL,JDBC连接mysql数据库时默认使用IP地址127.0.0.1和端口号3306,所以当连接数据库与此一致时,可省略数据库地址和端口为jdbc:mysql:///test。①MySQL 8.0 以下版本 - JDBC 驱动名(即jar包中的名称),注册JDBC驱动及数据库 URLstatic final String JDBC_DRIVER = “com.mysql.jdbc.Driver”;static final String DB_URL = “jdbc:mysql://localhost:3306/test”;②// MySQL 8.0 以上版本 - JDBC 驱动名(即jar包中的名称),注册JDBC驱动及数据库 URLstatic final String JDBC_DRIVER = “com.mysql.cj.jdbc.Driver”;static final String DB_URL = “jdbc:mysql://localhost:3306/test?useSSL=falseallowPublicKeyRetrieval=trueserverTimezone=UTC”;因为本次使用的是mysql-connector-java-8.0.30.jar,如第一步中所述。若使用①中配置url,在第3步使用JDBC_DRIVER注册JDBC驱动时,会报如下错误Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The new driver class is 'com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.。加载数据库驱动(即jar包中的名称),注册JDBC驱动:Class.forName(JDBC_DRIVER);。Class.forName(JDBC_DRIVER);来注册加载驱动的原因Class.forName(类名)是让JVM查找并加载该类名对应的类中的静态代码块,而本文示例中使用的是MySQL数据库,所以选择com.mysql.jdbc.Driver类(MySQL数据库厂商提供的 JDBC 驱动,并借助于这些驱动连接数据库)中正好只有一段静态代码——使用Jdbc程序中的DriverManager来加载驱动,由此创建与数据库的链接,如下所示。所以删除本句话及catch中本句,可能抛出的异常。在实际开发中之所以推荐使用Class.forName(“com.mysql.jdbc.Driver”);,而非registerDriver方法,来注册驱动,这是因为:如果代码中直接使用mysql的jar包

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价