当前位置:   article > 正文

java学习笔记21——JDBC_connection 创建表

connection 创建表

日报 11.11 JDBC

学习内容

JDBC

JDBC 英文名为:Java Data Base Connectivity(Java 数据库连接),官方解释它是独立于数据库的标准的 Java API

JDBC 是一种规范,它提供一套完整的允许便捷式访问底层数据库的接口,简单来说它就是 Java 与数据库连接的桥梁或者插件,通过它,就能用 Java 代码操作数据库,实现数据库的增删改查、存储过程和事务处理等功能。

JDBC 的核心 API

  1. DriverManager

作用:

  • 管理和注册驱动
  • 创建数据库的连接

类中方法

Connection getConnection (String url, String user, String password) :通过连接字符串,用户名,密码来得到数据。
库的连接对象
Connection getConnection (String url, Properties info) :通过连接字符串,属性对象来得到连接对象。

  1. Connection 接口 :

    一个连接对象,可用于创建 StatementPreparedStatement 对象。

类中方法

Statement createStatement() :创建一条 SQL 语句对象。

  1. Statement接口:

    一个 SQL 语句对象,用于将 SQL 语句发送给数据库服务器。

类中方法

int executeUpdate(String sql)

  • 用于发送 DML 语句,增删改的操作,insert、update、delete
  • 参数:SQL 语句
  • 返回值:返回对数据库影响的行数

ResultSet executeQuery(String sql)

  • 用于发送 DQL 语句,执行查询的操作。select
  • 参数:SQL 语句
  • 返回值:查询的结果集

释放资源

  1. 需要释放的对象:ResultSet 结果集,Statement 语句,Connection 连接

  2. 释放原则:先开的后关,后开的先关。ResultSet → Statement → Connection

  3. 放在哪个代码块中:finally 块

  4. PreparedStatemen 接口: 一个 SQL 语句对象,是 Statement 的子接口。
  5. ResultSet 接口: 用于封装数据库查询的结果集,返回给客户端 。

boolean next()

  • 游标向下移动 1 行
  • 返回 boolean 类型,如果还有下一条记录,返回 true,否则返回 false

数据类型 getXxx()

  • 通过字段名,参数是 String 类型。返回不同的类型
  • 通过列号,参数是整数,从 1 开始。返回不同的类型
  • 还有 boolean 型、Long 型,很多很多

JDBC 的执行步骤

  1. 注册驱动
  2. 获取数据库对象
  3. 定义 SQL 语句
  4. 获取执行 SQL 的对象
  5. 执行 SQL 语句
  6. 处理结果
  7. 释放资源

任务内容

1.)使用 JDBC 连接数据库并创建如下数据表:

编码 部门编码 姓名 性别 年龄 入职日期
1 1 李雷 22 2021-01-09
2 1 韩梅梅 21 2020-02-23
3 2 赵男 23 2018-05-17
4 3 周倩 20
5 3 夏雨 2017-09-29
编码 部门名称
1 研发部
2 产品部
3 运营部
4 财务部

答:创建表格

package com.xxm.advanced_camp.mission16_JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class task1 {
   
    public static void main(String[] args) throws Exception {
   
        //1. 注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取数据库连接对象
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/study", "root", "root");
        //3.定义 sql 语句
        //创建员工表
        String sql1 = "CREATE TABLE employers_table(\n" +
                     "id INTEGER(8) NOT NULL AUTO_INCREMENT,\n" +
                     "department_id INTEGER(8) NOT NULL,\n" +
                     "emp_name CHAR(16) NOT NULL,\n" +
                     "gender CHAR(8),\n" +
                     "age INTEGER(8),\n" +
                     "join_date CHAR(32),\n" +
                     "PRIMARY KEY(id)\n" +
                     ");";
        
        //创建部门表
        String sql2 = "CREATE TABLE departments_table(\n" +
                      "department_id\tINTEGER(4) NOT NULL AUTO_INCREMENT,\n" +
                      "department_name\tCHAR(16)   NOT NULL,\n" +
                      "PRIMARY KEY(department_id)\n" +
                      ");";
        //4.获取执行 sql 的对象
        Statement stmt = conn.createStatement();
        //5.执行 sql 语句
        int count1 = stmt.executeUpdate(sql1);
        int count2 = stmt.executeUpdate(sql2);
        //6.处理结果
        System.out.println(count1);
        System.out.println(count2);
        //7.释放资源
        stmt.close();
        conn.close();
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

任务2

使用 JDBC 完成如下任务:

  1. 将韩梅梅的性别更新为女,夏雨的年龄更新为 24 岁,并将周倩的入职日期更新为 2019-07-01;
  2. 查询所有在 2018 年之后入职且年龄大于 22 岁的员工;
  3. 分别使用内连接、左外连接、右外连接和全连接,实现员工表的部门表的关联查询;
  4. 利用 SQL 函数求出所有员工的平均年龄,找出年龄最大的员工和最小的员工;
  5. 将员工表按照年龄排序,将员工表按照入职日期排序;
  6. 将员工按照性别分组然后统计男女的人数;
  7. 开启事务,并通过不同的事务隔离级别完成数据更新;
  8. 给员工表插入十万条数据(员工姓名、年龄、日期都可以随机生成),然后再使用批处理完成同样的功能,比较两种操作的耗时。

答:1-7,由于在 SQL 中做过, 在 JDBC 中就不再做了。

但是要注意几个点:

  1. JDBC 的执行步骤
    1. 注册驱动
    2. 获取数据库对象
    3. 定义 SQL 语句
    4. 获取执行 SQL 的对象
    5. 执行 SQL 语句
    6. 处理结果
    7. 释放资源

答:

题中,各个要求不同的点,主要在 第三步,SQL 语句不同。

其中,第 1 个要求,在第 5-6 步的时候,要使用 executeUpdate , 接收结果时使用 int 类型(处理影响的行数);

后面几个要求,要使用 executeQuerey ,接收结果时使用 Result 类的对象,输出时类似这样。

第七步,释放资源时,要先关闭结果集 ResultSet,再关闭 Statement,再关闭 Connection 。

给员工表插入十万条数据(员工姓名、年龄、日期都可以随机生成),然后再使用批处理完成同样的功能,比较两种操作的耗时。

package com.xxm.advanced_camp.mission16_JDBC;

import 
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/297155
推荐阅读
相关标签
  

闽ICP备14008679号