Java学习教程,从入门到精通,JDBC驱动程序类型及语法知识点(91)
JDBC驱动程序类型及语法知识点
一、JDBC驱动程序类型
JDBC驱动程序主要有以下四种类型:
1. Type 1:JDBC - ODBC桥驱动程序(JDBC - ODBC Bridge Driver)
- 特点:这种驱动程序是Java与ODBC(Open Database Connectivity)的桥梁。它通过调用本地的ODBC驱动程序来实现与数据库的连接。由于需要本地驱动程序的支持,所以它不是纯Java驱动程序。
- 优点:开发简单,可以连接到任何支持ODBC的数据库。
- 缺点:性能相对较差,因为需要在Java和本地代码之间进行转换。并且在不同的操作系统平台上需要安装不同的ODBC驱动程序,移植性较差。
- 适用场景:适用于小型应用程序或开发阶段,当需要快速连接到数据库进行测试时。
2. Type 2:本地API驱动程序(Native API Driver)
- 特点:这种驱动程序使用本地API(如DB2的CLI、Oracle的OCI等)来与数据库进行交互。它需要在客户端安装特定数据库的本地库。
- 优点:性能比Type 1驱动程序好,因为直接使用数据库的本地API,减少了中间的转换环节。
- 缺点:不是纯Java驱动程序,需要在不同的操作系统上安装不同的本地库,移植性差。并且需要对数据库的本地API有深入的了解。
- 适用场景:适用于对性能要求较高,且开发环境和运行环境相对固定,能够安装数据库本地库的应用程序。
3. Type 3:网络协议驱动程序(Network Protocol Driver)
- 特点:这种驱动程序通过网络协议与数据库服务器进行通信。客户端的驱动程序将JDBC调用转换为数据库服务器能够理解的网络协议,然后通过网络发送给服务器。服务器端有一个中间件(如数据库连接服务器)将网络协议转换为数据库能够理解的本地协议。
- 优点:纯Java驱动程序,具有良好的移植性。可以在任何支持Java的平台上运行,不需要安装数据库的本地库。并且可以实现数据库连接的集中管理,便于维护和安全控制。
- 缺点:增加了网络通信的复杂性,可能会导致性能略微下降。并且需要在服务器端部署中间件,增加了系统的复杂度。
- 适用场景:适用于分布式应用程序,特别是当客户端和数据库服务器不在同一台机器上,且需要集中管理数据库连接时。
4. Type 4:纯Java驱动程序(Pure Java Driver)
- 特点:这种驱动程序完全用Java编写,不需要任何本地库或中间件。它将JDBC调用直接转换为数据库能够理解的网络协议,通过网络发送给数据库服务器。
- 优点:纯Java驱动程序,具有最好的移植性。可以在任何支持Java的平台上运行,不需要安装额外的本地库或中间件。并且性能较好,因为减少了中间环节的转换。
- 缺点:需要数据库服务器支持特定的网络协议。并且对于一些复杂的数据库操作,可能不如Type 2驱动程序灵活。
- 适用场景:是最常用的驱动程序类型,适用于大多数Java应用程序,特别是需要在多种操作系统平台上运行的应用程序。
二、JDBC语法知识点
1. 加载驱动程序
在使用JDBC之前,需要加载数据库驱动程序。对于Type 4驱动程序,通常使用Class.forName()
方法加载驱动类。例如,对于MySQL数据库,加载驱动的代码如下:
java复制
Class.forName("com.mysql.cj.jdbc.Driver");
这行代码的作用是将MySQL的JDBC驱动类加载到JVM(Java虚拟机)中,使得后续可以通过JDBC API与MySQL数据库进行连接和交互。
2. 建立数据库连接
加载驱动程序后,需要建立与数据库的连接。使用DriverManager.getConnection()
方法可以建立连接。该方法需要传入数据库的URL、用户名和密码。以MySQL数据库为例,建立连接的代码如下:
java复制
String url = "jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
其中,url
是数据库的连接字符串,指定了数据库的类型(jdbc:mysql://
)、服务器地址(localhost
)、端口号(3306
)、数据库名称(mydatabase
)以及一些连接参数(如字符编码、时区等)。username
和password
分别是数据库的用户名和密码。DriverManager.getConnection()
方法返回一个Connection
对象,代表与数据库的连接。
3. 创建Statement
对象
建立连接后,需要创建一个Statement
对象来执行SQL语句。Statement
对象可以执行静态SQL语句,即在程序编译时已经确定的SQL语句。创建Statement
对象的代码如下:
java复制
Statement stmt = conn.createStatement();
这行代码通过Connection
对象的createStatement()
方法创建了一个Statement
对象。使用Statement
对象可以执行查询、更新等SQL操作。
4. 执行SQL查询语句
使用Statement
对象可以执行SQL查询语句。执行查询语句的方法是executeQuery()
,它返回一个ResultSet
对象,代表查询结果。例如,查询users
表中所有记录的代码如下:
java复制
String sql = "SELECT * FROM users";
ResultSet rs = stmt.executeQuery(sql);
sql
变量存储了要执行的SQL查询语句。stmt.executeQuery(sql)
方法执行查询语句,并将结果存储在ResultSet
对象rs
中。通过遍历ResultSet
对象,可以获取查询结果中的每一行数据。
5. 处理查询结果
获取到ResultSet
对象后,需要遍历它来处理查询结果。使用ResultSet
对象的next()
方法可以移动到结果集的下一行,getXXX()
方法(如getString()
、getInt()
等)可以获取指定列的值。例如,处理查询结果的代码如下:
java复制
while (rs.next()) {
int id = rs.getInt("id");
String username = rs.getString("username");
String email = rs.getString("email");
System.out.println("ID: " + id + ", Username: " + username + ", Email: " + email);
}
在while
循环中,rs.next()
方法逐行遍历结果集。每次循环时,使用rs.getInt("id")
、rs.getString("username")
、rs.getString("email")
等方法获取当前行的id
、username
、email
列的值,并将它们打印出来。
6. 执行SQL更新语句
除了查询语句,还可以使用Statement
对象执行SQL更新语句,如插入、更新、删除等操作。执行更新语句的方法是executeUpdate()
,它返回一个整数,表示受影响的行数。例如,插入一条记录到users
表的代码如下:
java复制
String sql = "INSERT INTO users (username, email) VALUES ('kimi', 'kimi@example.com')";
int rowsAffected = stmt.executeUpdate(sql);
System.out.println("Affected rows: " + rowsAffected);
sql
变量存储了要执行的SQL插入语句。stmt.executeUpdate(sql)
方法执行更新语句,并返回受影响的行数,存储在rowsAffected
变量中。最后,将受影响的行数打印出来。
7. 关闭资源
在完成数据库操作后,需要关闭打开的资源,包括ResultSet
、Statement
和Connection
对象。关闭资源可以释放数据库连接和系统资源,避免资源泄露。关闭资源的代码如下:
java复制
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
在关闭资源时,需要先判断资源对象是否为null
,然后在try
代码块中调用close()
方法关闭资源。如果在关闭资源时发生SQLException
异常,使用catch
代码块捕获并打印异常信息。
三、案例代码
以下是一个完整的JDBC案例代码,演示了如何使用JDBC连接MySQL数据库,执行查询和更新操作,并处理查询结果。
java复制
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcExample {
public static void main(String[] args) {
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC";
String username = "root";
String password = "123456";
Connection conn = null;
Statement stmt = null;
ResultSet rs =
原文地址:https://blog.csdn.net/qq_45746668/article/details/145168373
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!