如何熟练掌握JDBC编程?

目录

🐳今日良言:未来可期,人生值得

🐂一、JDBC

🐼1.概念

🐼2.背景

🐼3.使用

🐯二、编写数据库代码

🐼1.增/删/改数据

🐼2.查数据


🐳今日良言:未来可期,人生值得

🐂一、JDBC

🐼1.概念

JDBC的全称是Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作

🐼2.背景

MySQL提供了很多API,这些API就是为了让我们实现客户端的.

API(Application Programming Interface): 这类似于你拿到一个东西,这个东西可以提供给你哪些功能/服务.

在早期的时候,Oracle,SQLServer,SQLite等数据库,都有自己的API,Oracle的API是Oracle里面的大佬开发的,SQLServer的API是微软的大佬开发的,而SQLite的API是开源社区的大佬们开发的,搞了这么多API,对于基层程序猿来说,这无疑是一件非常痛苦的事情,因为,学数据库编程,程序猿就需要好几套API,学习成本非常高.

此时,在Java的圈子中,JDBC站了出来,把这些API都统一成了一套,指定成标准.由于java的影响很大,此时,各种数据库厂商都提供了能够适应JDBC相关的"驱动包"(相当于API的具体实现)

此时,只要掌握这套API,无论操作哪个数据库,操作的代码都是不变,基本上相同的.

🐼3.使用

1).安装对应数据库的驱动包

一个java程序通过JDBC来操作对应数据库的流程如下:

MySQL提供的驱动包,可以去"中央仓库" 下载.中央仓库就类似于手机上的应用商店.中央仓库的网址如下:

https://mvnrepository.com/

下载流程如下:

 下载以后在目录中找到:

.jar 是一个java格式的压缩包,类似于.rar  .zip一样.

2).将jar包导入到项目中

 此时idea就可以解析出jar包里包含的的内容了,此时就可以进行编码代码了

🐯二、编写数据库代码

🐼1.增/删/改数据

在使用jdbc往数据库中插入数据时,首先需要准备好数据库和数据表.

博主这里的数据库是exercise 数据表是 student表

增删改查数据,代码步骤总结来说是5步

1).

创建数据源. 描述了数据库服务器在哪里

2).和数据库建立网络连接(写的jdbc代码本质上是实现了一个客户端,要通过网络和服务器通信)

3).构造一个SQL语句,来完成操作

4).执行SQL语句.(控制客户端给服务器发送请求)

5).断开和数据库的连接,并且释放资源

插入数据/删除数据/修改数据代码一模一样,只需要修改SQL语句即可,这里只详细介绍插入数据

完整操作如下:

 运行后,观察student表中数据,会发现插入成功:

 

 针对每个步骤进行解释:

1).

 这里的MysqlDataSource() 就是驱动包里面提供的具体的类了,实现了这个DataSource接口

这里发生向上转型.关于向上转型博主之前的文章有介绍过:

(1条消息) OOP(面向对象编程)三大特性_程序猿小马的博客-优快云博客_面向对象编程特性oop

导入包的时候注意:

这三行代码都发生了向下转型

2).
上面数据源的创建操作,只是描述了服务器在哪,并没有进行真正的访问,紧接着进行的'连接'操作才是真正的开始通过网络进行通信

3).

第一行行代码描述了sql语句是什么样的,正在的执行sql语句是靠第二行代码

PreparedStatement做了很多事情,比如会对SQL语句进行一些预处理(对语法进行解析之类的)

4).

 插入/删除/修改数据 都是使用executeUpdate()来执行  

查找数据使用executeQuery()执行

返回值是一个整数,表示此次操作影响到几行,这就代表了cmd命令中下面:

5).

当连接不再使用的时候,就需要释放连接,将之前的记录给'擦除掉';

这就是jdbc编程的五个步骤;

上述操作的SQL语句

 

这里写死了,不太好,那么如何实现插入是动态的呢?也就是根据用户输入的信息进行插入.

靠谱的方案是,使用PreparedStatement来通过占位符替换的方式,实现动态SQL的构造:

插入操作完整代码如下:(一定注意包不要导入错误)

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;


public class JdbcInsert {
    public static void main(String[] args) throws SQLException {
        // 先提前准备好数据库和数据表
        // 1).`创建数据源. 描述了数据库服务器在哪里
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/exercise?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("你的密码");
        //2).和数据库建立网络连接(写的jdbc代码本质上是实现了一个客户端,要通过网络和服务器通信)
                Connection connection = dataSource.getConnection();
        //3).构造一个SQL语句,来完成操作
        String str = "insert into student values(?,?)";
        // jdbc 中还需要搭配一个特点的对象,来描述这里的sql情况
        PreparedStatement statement = connection.prepareStatement(str);
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号");
        int id = scanner.nextInt();
        System.out.println("请输入姓名");
        String name = scanner.next();
        statement.setInt(1,id);
        statement.setString(2,name);
        //4).执行SQL语句.(控制客户端给服务器发送请求)
                int ret = statement.executeUpdate();
                System.out.println("ret = "+ret);
        //5).断开和数据库的连接,并且释放资源
                statement.close();
                connection.close();

    }
}

🐼2.查数据

与上面的插入数据相比较,查找数据就多了一个步骤,遍历结果集

首先,还是先来看,完整代码:

 接下来,分析比插入操作多的步骤:

1).

 executeQuery() 方法的返回值是一个结果集合,此时,如果想要得到这个结果集合的数据就需要进行遍历.

2).

 3).

关闭资源多一个步骤

查找数据的完整代码如下:

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;


public class JdbcInsert {
    public static void main(String[] args) throws SQLException {
        // 先提前准备好数据库和数据表
        // 1).`创建数据源. 描述了数据库服务器在哪里
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/exercise?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("你的密码");
        //2).和数据库建立网络连接(写的jdbc代码本质上是实现了一个客户端,要通过网络和服务器通信)
        Connection connection = dataSource.getConnection();
        //3).构造一个SQL语句,来完成操作
        String str = "select * from student";
        // jdbc 中还需要搭配一个特点的对象,来描述这里的sql情况
        PreparedStatement statement = connection.prepareStatement(str);
        //4).执行SQL语句.(控制客户端给服务器发送请求)
        ResultSet resultSet = statement.executeQuery();
        // 判断是否有下一个数据
        while (resultSet.next()) {
            // 使用getXXX 方法获取到每一行
            // 获取int 就使用getInt  获取String 就使用getString.....
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id:"+id+" "+"name:"+name);
        }
        //5).断开和数据库的连接,并且释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

其他的操作只需要修改SQL语句即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值