赞
踩
JDBC(Java Database Connectivity)是Java提供的用于连接和操作数据库的API。它允许Java应用程序与各种数据库进行交互,以下是JDBC的基本原理:
驱动程序管理:JDBC使用不同的数据库驱动程序来连接不同类型的数据库。每种数据库都有相应的JDBC驱动程序,负责处理Java应用程序与数据库之间的通信。常见的驱动程序类型包括:
建立连接:应用程序通过DriverManager
获取数据库连接。一般步骤包括:
DriverManager.getConnection()
方法获取连接对象。执行SQL语句:获取到连接后,可以通过Connection
对象创建Statement
或PreparedStatement
对象,来执行SQL语句。在执行过程中,SQL语句会被发送到数据库,并返回结果集。
处理结果:执行完SQL语句后,结果通常会以ResultSet
对象的形式返回。开发者可以通过ResultSet
对象读取查询结果,并进行相应处理。
事务管理:JDBC支持对数据库的事务管理。可以通过Connection
对象的方法来手动控制事务,比如提交、回滚等。
关闭资源:操作完成后,应该关闭ResultSet
、Statement
和Connection
等资源,以防止内存泄漏。
总体来说,JDBC提供了一种与数据库进行交互的标准方式,使得Java程序能够高效地访问和操作各种数据库,同时保持良好的跨平台性。
JDBC优势:
我推荐一个官方网址:中央仓库
打开网址后在上方搜索 “mysql”
搜索完,出现以下选项,选择第二个进入。
进入该页面后,我们发现有各种版本的驱动包。
那么我们如何选择版本呢?这取决于你的MySQL版本 ,如果你的MySQL版本是8.0,那么选择8.0x系列的,如果你的MySQL版本是5.1,那么选择5.1x系列的。这里我的MySQL是5.1版本,我用5.1x系列做一个示例。
下滑找到你所需要的版本并点击,这里我下载的是5.1.49版本。
接着我们进入下一个界面,找到 “jar” 字样,点击即可下载。
我们下载好驱动包就要将其添加到项目依赖了,接下来跟着我的操作。
我们打开IDEA,右击项目文件,选择新建 "Directory" 模块。
我们一般将该模块名取为 “lib” ,用来存放第三方库。
接下来找到你的驱动包 “CTRL + C” 复制,接着到IDEA中选中 "lib" 模块 “CTRL + V” 粘贴,操作完后呈现以下状态。选择 ok 就好了。
接下来我们还有最后一步操作,右击该驱动包,选择 “Add as Library...”
最后操作完呈现以下状态既是成功了。
Connection接口实现类由数据库提供,获取Connection对象通常有两种方式:
- //注册数据库驱动: 加载适当的数据库驱动程序,可以通过反射方式来加载。
- try {
- Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL数据库示例
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- //建立数据库连接: 使用DriverManager获取数据库连接,提供数据库的URL、用户名和密码。
- String url = "jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false"; // 数据库URL,“testdb” 这里改为你要操作的数据库名,其余部分不需要改
- String user = "root"; // 用户名,这个用户名一般默认是"root"
- String password = "your_password"; // 密码,这里填写你自己的MySQL密码
-
- Connection connection = null;
- try {
- connection = DriverManager.getConnection(url, user, password);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- DataSource dataSource = new MysqlDataSource();
- ((MysqlDataSource)dataSource).setUrl
- ("jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false");// 数据库URL,“testdb” 这里改为你要操作的数据库名,其余部分不需要改
- ((MysqlDataSource)dataSource).setUser("root"); // 用户名,这个用户名一般默认是"root"
- ((MysqlDataSource)dataSource).setPassword("your_password");密码,这里填写你自己的MySQL密码
- Connection connection = dataSource.getConnection();
1. DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源
时,通过connection.close()都是关闭物理连接。
2. DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接
是可以复用的,每次使用完数据库连接,释放资源调用connection.close()都是将Conncetion连接对象回收。
Statement对象主要是将SQL语句发送到数据库中。JDBC API中主要提供了三种Statement对象。
创作操作命令有多种方式,这里我使用其中一种是开发中常用的。
- String sql = "select * from student";
- PreparedStatement statement = connection.prepareStatement(sql);
主要掌握两种执行SQL的方法:
第一种:执行update、insert、delete语句。
- int i = statement.executeUpdate();//返回影响了i行
- System.out.println(i);//打印影响i行
第二种:执行select语句。
- //处理结果集: 遍历ResultSet对象,获取查询结果。
- try {
- while (resultSet.next()) {
- int id = resultSet.getInt("id");
- String name = resultSet.getString("name");
- System.out.println("ID: " + id + ", Name: " + name);
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
ResultSet对象
ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法提供了对这些行中数据的访问。
ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。
- try {
- if (resultSet != null) resultSet.close();
- if (statement != null) statement.close();
- if (connection != null) connection.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
1. 创建数据库连接Connection
2. 创建操作命令Statement
3. 使用操作命令来执行SQL
4. 处理结果集ResultSet
5. 释放资源
整合以上步骤,下面是一个完整的JDBC示例代码:
首先需要你在MySQL中创建一个 school 数据库和一个 student 表,并且插入多条数据。
- create database school charset utf8;
- use school;
- create table student (
- id int primary key,
- name varchar(20) not null);
- insert into student values (1,'张三'),(2,'李四'),(3,'王五');
上面的代码是在MySQL客户端执行的语句。
- import java.sql.*;
-
- public class JdbcExample {
- public static void main(String[] args) {
-
- // 建立数据库连接
- String url = "jdbc:mysql://127.0.0.1:3306/school?characterEncoding=utf8&useSSL=false";
- String user = "root";
- String password = "your_password";
- Connection connection = null;
-
- try {
- connection = DriverManager.getConnection(url, user, password);
- Statement statement = connection.createStatement();
-
- // 执行SQL查询
- String sql = "SELECT * FROM student";
- ResultSet resultSet = statement.executeQuery(sql);
-
- // 处理结果集
- while (resultSet.next()) {
- int id = resultSet.getInt("id");
- String name = resultSet.getString("name");
- System.out.println("ID: " + id + ", Name: " + name);
- }
-
- // 关闭资源
- resultSet.close();
- statement.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- try {
- if (connection != null) connection.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
这个示例展示了如何使用JDBC连接MySQL数据库、执行查询并处理结果。请根据实际情况修改数据库URL、用户名和密码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。