理解JDBC与java.sql包:基础与应用

4星 · 超过85%的资源 需积分: 11 48 下载量 24 浏览量 更新于2024-08-02 1 收藏 186KB DOC 举报
"本文主要介绍了JDBC(Java Database Connectivity)技术以及`java.sql`包的基本使用,涵盖了JDBC的概述、结构、应用模型以及JDBC驱动管理器和驱动程序的概念。" JDBC是Java中用于与数据库交互的一种标准接口,由Sun Microsystems(现Oracle公司)的Javasoft开发。它提供了一个统一的方法来连接和操作各种类型的数据库,类似于ODBC在Windows环境中的作用。JDBC的核心组件包括Java应用程序、JDBC驱动器管理器、驱动器和数据源。 JDBC的架构由三部分组成:JDBC API、JDBC驱动管理者和JDBC驱动程序。JDBC API是一组接口,定义了如何与数据库进行通信的标准,但并不具体实现这些功能。数据库供应商需要提供实现了这些接口的驱动程序,如`mysql-connector-java-xxxx-bin.jar`对应MySQL,`ojdbc.jar`对应Oracle。这种设计允许应用程序保持与数据库无关性,只需更换驱动程序即可切换数据库。 JDBC支持两种模型来访问数据库:两层模型和三层模型。 1. **两层模型**在这种模型中,Java应用程序直接与数据库建立连接。用户发出的SQL语句直接传递给数据库,结果再返回给用户。这种模式通常适用于客户端/服务器结构,其中用户的计算机作为客户端,数据库服务器位于另一台机器上,可能通过Intranet或Internet连接。 2. **三层模型**在三层模型中,应用程序通过中间层服务器与数据库交互。SQL语句先发送到中间层,由中间层转发给数据库,数据库处理后,结果返回中间层,再由中间层返回给用户。这种模型对于MIS管理员来说更有优势,因为它允许更灵活的架构,易于管理和维护,同时可以提供额外的安全性和性能优化。 `java.sql`包是Java标准库的一部分,包含了与数据库交互所需的接口和类,如`Connection`代表数据库连接,`Statement`和`PreparedStatement`用于执行SQL语句,`ResultSet`表示查询结果,以及`DriverManager`用于管理数据库驱动等。 在实际应用中,开发者首先需要加载并注册数据库驱动,然后通过`DriverManager.getConnection()`方法建立与数据库的连接。之后,创建`Statement`或`PreparedStatement`对象来执行SQL语句,处理返回的`ResultSet`,最后关闭所有资源以释放数据库连接。 JDBC和`java.sql`包为Java开发者提供了一种标准、灵活的方式来访问和操作数据库,无论数据库类型如何,都能够实现高效、稳定的数据库交互。

驱动加载成功 Thu Jun 08 22:43:18 CST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. java.sql.SQLException: No timezone mapping entry for 'GTM+8' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:85) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229) at com.til.jdbc.JDBC.main(JDBC.java:16) Caused by: com.mysql.cj.exceptions.WrongArgumentException: No timezone mapping entry for 'GTM+8' at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.ref

2023-06-09 上传
2023-06-06 上传