赞
踩
目录
JDBC是Java平台上的一组API,它定义了一套用于执行SQL语句的方法和规范。通过JDBC,我们可以使用Java代码连接数据库,进行数据的增删改查操作。JDBC提供了一种独立于数据库的编程接口,使得我们可以方便地切换不同的数据库系统,而无需修改大量的代码。
JDBC由两部分组成:JDBC API和JDBC驱动程序。
JDBC API:JDBC API是一组Java接口,定义了与数据库交互的方法和规范。JDBC的核心组件包括:
DriverManager:负责管理数据库驱动程序,用于建立数据库连接。
Connection:表示与数据库的连接,用于执行SQL语句和事务管理。
Statement和PreparedStatement:用于执行SQL语句并返回结果。
ResultSet:表示查询结果集,用于遍历和获取查询结果。
JDBC驱动程序:JDBC驱动程序是实现JDBC API的具体实现。不同的数据库厂商提供了各自的JDBC驱动程序,用于连接和操作其数据库。我们需要根据所使用的数据库选择相应的JDBC驱动程序,并将其加载到Java程序中。
使用Class.forName()方法加载所使用的数据库的JDBC驱动程序。例如,加载MySQL的JDBC驱动程序可以使用以下代码:
Class.forName("com.mysql.cj.jdbc.Driver");
注:这里测试代码用的是8.0.33版本的mysql驱动包:
- <dependencies>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.33</version>
- </dependency>
- </dependencies>
使用DriverManager.getConnection()方法建立与数据库的连接。需要提供数据库的URL、用户名和密码。例如,连接MySQL数据库可以使用以下代码:
- Connection connection = DriverManager.getConnection(
- "jdbc:mysql://192.168.153.129:3306/test2sql?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai",
- "root",
- "admin111111");
这里可以看到示例代码使用的url比较长,这里url主要由以下几部分构成:
协议:指定了连接数据库时要使用的协议,通常是"jdbc";
子协议(Subprotocol):指定了要连接的数据库类型或特定的数据库驱动程序。不同数据库类型有不同的子协议,例如MySQL的子协议是"mysql",Oracle的子协议是"oracle";
主机名:指定了数据库服务器的主机名或IP地址。这里IP地址为192.168.153.129;
端口号:指定了数据库服务器监听连接的端口号。不同数据库系统的默认端口号可能不同,如MySQL的默认端口号是3306;
数据库名称:指定了要连接的具体数据库的名称。在连接数据库时,需要明确指定要连接的数据库,这里数据库的名称为test2sql。
参数:在JDBC连接URL中,除了主要的连接信息外,有时候还可以添加一些参数来对数据库连接进行额外的配置和控制。这些参数通常以问号(?)开头,多个参数之间使用“&”符号分隔。常见的JDBC连接URL参数包括:
user:指定连接数据库的用户名。
password:指定连接数据库的密码。
autoReconnect:指定是否自动重新连接到数据库。
useSSL:指定是否使用SSL加密连接。
characterEncoding:指定字符编码。
serverTimezone:指定服务器时区。
maxRows:指定最大返回行数。
fetchSize:指定每次从数据库获取的行数。
timeout:指定连接超时时间。
使用Connection对象的createStatement()方法创建Statement对象,用于执行SQL语句。例如,创建一个Statement对象可以使用以下代码:
Statement statement = connection.createStatement();
使用Statement对象的executeUpdate()方法执行更新操作(如插入、删除、修改),使用executeQuery()方法执行查询操作。例如,执行一个查询语句可以使用以下代码:
- String sql = "select * from sales";
- ResultSet resultSet = statement.executeQuery(sql);
使用ResultSet对象处理查询结果。可以使用ResultSet的方法获取查询结果的各个字段的值。例如,遍历查询结果示例代码:
- while(resultSet.next()){
- String s1 = resultSet.getString(2);
- String s2 = resultSet.getString("goods");
- System.out.println(s1+";"+s2);
- }
此处需要对ResultSet的一些方法做出一些说明:
resultSet.next(): ResultSet是用于表示从数据库查询返回的结果集的接口。ResultSet对象维护一个指向当前行的光标,当调用resultSet.next()方法时,如果存在下一行数据,则该方法会将光标移动到下一行,并返回true;如果不存在下一行数据(即已经到达结果集的末尾),则返回false;
resultSet.getXXX(): ResultSet支持多种getXXX方法,如getString,getBoolean,getByte,getShort,getInt,getLong,getFloat, getDouble等,表示以不同的类型查询当前行某一列的数据,这些方法的参数支持int类型的列索引或string类型的列名称,如示例代码中的两种写法都是取第二列(goods)的数据:
- String s1 = resultSet.getString(2);
- String s2 = resultSet.getString("goods");
另外,此处列索引号并非我们习惯中的以0开始的序列号,而是以1开始的序列号,即第一列的序列号并非是0而是1。
在完成数据库操作后,需要关闭ResultSet、Statement和Connection对象,释放资源。例如,关闭连接可以使用以下代码:
- resultSet.close();
- statement.close();
- connection.close();
在关闭连接和资源的时候,要注意关闭的顺序为先开后关,后开先关的原则,如我们是先开启连接connection,再创建statement对象,最后查询到resultSet结果的,那么关闭时就需要先关闭resultSet,再关闭statement,最后关闭connection。
在使用JDBC过程中,可能会出现各种异常情况,如数据库连接失败、SQL语句错误等。我们需要合理地处理这些异常,以保证程序的稳定性和安全性。可以使用try-catch语句块来捕获并处理异常,或者将异常抛出给上层调用者。
JDBC作为Java与数据库之间的桥梁,为开发人员提供了一种标准的方式来连接和操作数据库。通过JDBC,我们可以轻松地执行各种数据库操作,实现数据的增删改查。无论是开发Web应用、企业级应用还是数据分析,JDBC都是不可或缺的技术之一。本文仅对JDBC的基础知识做了介绍,其他功能留待日后再聊,希望本文对您了解JDBC的基础知识有所帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。