2022-08-18 第二小组 张明旭 JDBC学习记录

目录

JDBC的导入

JDBC:通过jAVA 操作数据库

导入外部依赖

1.数据的持久化

2.URL地址

3.用户名root4.密码root

执行数据库的DML语句---也就是增删改


JDBC的导入

JDBC:通过jAVA 操作数据库

数据库的驱动:java.sql.Driver 接口,所有驱动程序包都需要实现的接口
  如何加载驱动类?(前提:导入jar包才能加载类)
    利用反射:Class.forName("com.mysql.jdbc.Driver")

导入外部依赖

需要引入MySQL的驱动(指的是MySQL的jar包)

import org.junit.Test;
 //导入jar包就是引入外部资源
    @Test
     public void test01(){
}

1.数据的持久化

  将数据永久的保存起来,主要的方式还是储存在硬盘上。
  持久化的实现过程大部分是通过数据库来完成的。

2.URL地址

连接地址有关的jdbc协议:就叫jdbc

形式为:
  jdbc:mysql://主机名称:端口号/数据库名

  例:jdbc:mysql://127.0.0.13306/jsoft?useUnicode=true&characterEncoding=utf8
  8.0版本mysql还需要传参useSSL=false&serverTimezone=UTC(指定时差,否则差8小时)

  oracle的协议形式:
  jdbc:oracle:thin:@主机名称:oracle端口:数据库名

  sqlServer的协议形式:少用,微软旗下 (微软旗下还有C#:类似java)
  jdbc:sqlserver://127.0.0.1:端口号:DatabaseName=xxxx

3.用户名root
4.密码root

JDBC是死代码,连什么mysql都是这个代码,只是数据库名、账号、密码可能不同。

    @Test
    public void test01() throws ClassNotFoundException,
            NoSuchMethodException,
            InvocationTargetException,
            InstantiationException,
            IllegalAccessException,
            SQLException {
        // 数据库的url
        String url = "jdbc:mysql://127.0.0.1:3306/jsoft?useUnicode=true&characterEncoding=utf8" +
                "&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
        String username = "root";
        String password = "root";
        // 驱动的全类名
        String driverName = "com.mysql.cj.jdbc.Driver";

        // 1.加载驱动类
        Class clazz = Class.forName(driverName);
        // 2.实例化Driver对象
        Driver driver = (Driver) clazz.getDeclaredConstructor().newInstance();
        // 3.注册驱动
        DriverManager.registerDriver(driver);
        // 4.获取连接
        Connection connection = DriverManager.getConnection(url, username, password);
        System.out.println(connection);
        System.out.println(Objects.nonNull(connection) ? "数据库连接成功" : "数据库连接失败");
    }
}

重点:四要素

// 数据库的url
String url = "jdbc:mysql://127.0.0.1:3306/jsoft?useUnicode=true&characterEncoding=utf8" +
                "&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";

//账号
String username = "root";

//密码
String password = "root";


// 驱动的全类名
String driverName = "com.mysql.cj.jdbc.Driver";

执行数据库的DML语句---也就是增删改

Java有三个接口,分别定义了对数据库调用的不同方式
1.Statement:用来执行静态sql语句,并返回它所生成的结果对象
2.PreparedStatement:预编译,可以使用此对象多次高效的执行该语句
(重点学习前两个)
3.CallableStatement:用来执行sql存储过程

开发中可能要进行多次连接和关闭资源,可封装成一个类:

//连接  
public static Connection getConnection(){
        Properties properties = new Properties();
            Connection connection = null;
        try {
            properties.load(Ch01.class.getClassLoader().getResourceAsStream("jdbc.properties"));
            String url = properties.getProperty("mysql.url");
            String driverName = properties.getProperty("mysql.driverName");
            String username = properties.getProperty("mysql.username");
            String password = properties.getProperty("mysql.password");
            Class.forName(driverName);
            connection = DriverManager.getConnection(url, username, password);
            System.out.println(connection);
            System.out.println(Objects.nonNull(connection) ? "数据库连接成功" : "数据库连接失败");
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return connection;
    }


//关闭资源
    public static void close(Connection c, Statement s){
        if (Objects.nonNull(s)){
            try {
                s.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (Objects.nonNull(c)){
            try {
                c.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

增加/修改表中数据:

@Test
    public void test01(){
        // 1.获取连接
        Connection conn = null;
        Statement stmt = null;
        try {
            conn = JDBCUtil.getConnection();
            stmt = conn.createStatement();
            // 2.执行sql语句
            String sql = "INSERT INTO ee (cname) VALUES ('Jay')";
            // 修改
            sql = "UPDATE ee SET cname = 'JJ' where id = 7";
            sql = "select * from ee";
            // 返回值是执行sql语句影响的行数
            int i = stmt.executeUpdate(sql);
            // 3.处理执行sql的返回值
            System.out.println(i);
            System.out.println("操作成功...");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtil.close(conn,stmt);
        }
    }

查询表中数据:

    @Test
    public void test01() {
        // 1.获取连接
        Connection conn = JDBCUtil.getConnection();
        Statement stmt = null;
        ResultSet rs = null;
        try {
            // 2.获取可以执行sql语句的stmt对象
            stmt = conn.createStatement();
            // 3.定义sql
            String sql = "select `id`,`cname` from ee where id = 7";
            // 4.执行查询的sql,会得到一个ResultSet
            // ResultSet就是封装了查询结果的一个对象
            rs = stmt.executeQuery(sql);
            // 5.遍历结果集ResultSet
            while(rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("cname");
                System.out.println("id:" + id + ",name:" + name);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            // 6.关闭资源
            JDBCUtil.close(conn,stmt,rs);
        }

    }

课后:对表中数据的增删改查也可封装成类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值