数据库>>JDBC编程

本文详细介绍了JavaDatabaseConnectivity(JDBC)的基本概念,包括如何导入数据库驱动、创建数据源与数据库建立连接、构造SQL语句(特别是预编译的使用),以及执行操作和资源的释放。最后展示了如何从用户输入动态构建SQL语句进行操作。

JDBC

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

准备

想要通过代码来操作数据库就需要在项目中导入对应数据库的驱动包,才能编写代码。

  1. 通过 Maven 中央仓库下载对应数据库驱动包;Maven中央仓库
    在这里插入图片描述
    点击第二个,会看到许多个版本,此处根据你自己的数据库版本进行选择。例如:你的数据库版本是5.xx,你就需要下载以5.xx开头的驱动包。
    在这里插入图片描述
    进行下载:
    在这里插入图片描述
  2. 在项目中导入驱动包;
    先创建一个目录,将驱动包复制到这个目录里面。
    在这里插入图片描述
    在这里插入图片描述
    此处将 jar 包导入到项目里面,就可以调用其中的方法和类来进行 JDBC 编程。
  3. 将 plug 目录标记为项目中的库;
    在这里插入图片描述
    这个操作使我们的编译器能识别目录里面的 jar 包,这样就可以调用 jar 包进行JDBC编程。
    在这里插入图片描述
  4. 进行 JDBC 编程;

JDBC 编程

进行 JDBC 编程需要以下几个步骤:

  1. 创建并初始化一个数据源
  2. 与数据库服务器建立连接
  3. 构造 sql 语句
  4. 执行 sql 语句
  5. 释放资源

创建并初始化一个数据源

public class JDBC {
    public static void main(String[] args) {
        // JDBC 开发步骤
        // 1. 创建并初始化一个数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");   // 默认
        ((MysqlDataSource)dataSource).setPassword("z0329");  // 数据库密码
        //MysqlDataSource dataSource1 = new MysqlDataSource();  // 第二种写法
        //dataSource1.setUrl();
        // 2. 与数据库服务器建立连接
        // 3. 构造 sql 语句
        // 4. 执行 sql 语句
        // 5. 释放资源
    }
}

注意 Url 的写法。Url 概念
在这里插入图片描述

与数据库服务器建立连接

public static void main(String[] args) throws SQLException {
        // JDBC 开发步骤
        // 1. 创建并初始化一个数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");   // 默认
        ((MysqlDataSource)dataSource).setPassword("z0329");  // 数据库密码
        //MysqlDataSource dataSource1 = new MysqlDataSource();  // 第二种写法
        //dataSource1.setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
        //dataSource1.setUser("root");
        //dataSource1.setPassword("z0329");
        // 2. 与数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        // 3. 构造 sql 语句
        // 4. 执行 sql 语句
        // 5. 释放资源
    }

注意:此处 Connection 包的路径
在这里插入图片描述

构造 sql 语句

// 3. 构造 sql 语句
        String sql = "insert into student value(1,'你好呀')";
        PreparedStatement statement = connection.prepareStatement(sql);  // 使用 PreparedStatement 提前预编译 sql 语句

为什么要进行预编译?
客户端给服务器发送请求(sql 字符串),服务器对 sql 语句进行解析,然后再执行。
而对于服务器来说,是要处理多个客户端请求的,这样以来服务器压力就很大,所以引出预编译
预编译:让客户端来对 sql 进行预编译和处理,服务器做的工作就简单点,压力就会小很多。

执行 sql 语句

// 4. 执行 sql 语句
        int result = statement.executeUpdate();   // insert,delete,update 这三个操作都可以使用 executeUpdate() 方法. 而 select 使用 executeQuery() 方法
        System.out.println("result = " + result);  // 返回影响行数

释放资源

public class JDBC {
    public static void main(String[] args) throws SQLException {
        // JDBC 开发步骤
        // 1. 创建并初始化一个数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");   // 默认
        ((MysqlDataSource)dataSource).setPassword("z0329");  // 数据库密码
        
        // 2. 与数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        // 3. 构造 sql 语句
        String sql = "insert into student value(1,'你好呀')";
        PreparedStatement statement = connection.prepareStatement(sql);  // 使用 PreparedStatement 提前预编译 sql 语句
        // 4. 执行 sql 语句
        int result = statement.executeUpdate();   // insert,delete,update 这三个操作都可以使用 executeUpdate() 方法. 而 select 使用 executeQuery() 方法
        System.out.println("result = " + result);  // 返回影响行数
        // 5. 释放资源
        statement.close();
        connection.close();
    }
}

执行前:在这里插入图片描述

执行后:在这里插入图片描述
在这里插入图片描述

进行简单优化

上述操作中,名字呀,id呀,是我们直接在程序中输入,写死的。那么还有种方法,可以让用户从键盘上键入内容。

  1. 添加一步提示用户从键盘输入;
  2. 对第三步 构造 sql 语句 进行修改。
public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        // JDBC 开发步骤
        // 1. 创建并初始化一个数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");   // 默认
        ((MysqlDataSource)dataSource).setPassword("z0329");  // 数据库密码

        // 2. 与数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        // 3. 从控制台读取用户输入的内容
        System.out.println("请输入学生 id");
        int id = scanner.nextInt();
        System.out.println("请输入学生姓名");
        String name = scanner.next();
        // 4. 构造 sql 语句
        String sql = "insert into student value(?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);  // 使用 PreparedStatement 提前预编译 sql 语句
        statement.setInt(1,id);  // 进行拼接,将第一个问号替换成 id
        statement.setString(2,name);  // 将第二个问号替换成 name
        System.out.println(statement);  // 打印 sql 语句
        // 5. 执行 sql 语句
        int result = statement.executeUpdate();   // insert,delete,update 这三个操作都可以使用 executeUpdate() 方法. 而 select 使用 executeQuery() 方法
        System.out.println("result = " + result);  // 返回影响行数
        // 6. 释放资源
        statement.close();
        connection.close();
    }

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值