Web02_JDBC

1:JDBC

1:简介

1:简介/执行步骤

 2:快速入门

/*
1:先导包先导jar包:mysql-connector-java-5.1.48.jar
2:使用JDBC操作数据库
*/
public class Tets03_JDBC {
    public static void main(String[] args) throws Exception {
        //1:注册驱动,主要告诉jvm咱们使用的实现类到底是谁???
        Class.forName("com.mysql.jdbc.Driver");
        //2:建立连接url:jdbc:mysql://ip地址:端口/数据库名字
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db2", "root", "root");
        //3:通过链接获取执行者对象
        Statement statement = conn.createStatement();
        //4:使用执行者对象执行sql语句
        String sql = "UPDATE Student1 SET name='王四',score = 21.2 WHERE id = 3";
        int row = statement.executeUpdate(sql);
        System.out.println(row);
        //5:释放资源
        statement.close();
        conn.close();
    }
}

3:DriverManager

 

 4:Connection 

 

1:获取执行SQL的对象

 2:事务管理

/**
 * JDBC API 详解:Connection
 */
public class JDBCDemo3_Connection {

    public static void main(String[] args) throws Exception {
        //1. 注册驱动,可以省略,但是建议不要省略
        Class.forName("com.mysql.jdbc.Driver");
        //2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写(不要省略)
        String url = "jdbc:mysql://localhost:3306/db2?useSSL=false";
        String username = "root";
        String password = "1234";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3. 定义sql
        String sql1 = "update account set money = 3000 where id = 1";
        String sql2 = "update account set money = 3000 where id = 2";
        //4. 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();

        try {
            // ============开启事务==========
            conn.setAutoCommit(false);
            //5. 执行sql
            int count1 = stmt.executeUpdate(sql1);//受影响的行数
            //6. 处理结果
            System.out.println(count1);
            int i = 3/0;
            //5. 执行sql
            int count2 = stmt.executeUpdate(sql2);//受影响的行数
            //6. 处理结果
            System.out.println(count2);

            // ============提交事务==========
            //程序运行到此处,说明没有出现任何问题,则需求提交事务
            conn.commit();
        } catch (Exception e) {
            // ============回滚事务==========
            //程序在出现异常时会执行到这个地方,此时就需要回滚事务
            conn.rollback();
            e.printStackTrace();
        }

        //7. 释放资源
        stmt.close();
        conn.close();
    }
}

5:Statement

6:ResultSet

public class Test06Query {
    public static void main(String[] args) throws Exception {
        //1:注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2:建立连接url:jdbc:mysql://ip地址:端口/数据库名字
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db2", "root", "root");
        //3:通过链接获取执行者对象
        Statement statement = conn.createStatement();
        //4:使用执行者对象执行sql语句
        String sql = "SELECT * from Student1";
        //获取执行查询语句对象
        ResultSet rs = statement.executeQuery(sql);
        //5:解析结果集 boolean next():将游标往下移动一行,并且返回该行是否有数据,getxxx的方法获取数据
        while (rs.next()){
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double score = rs.getDouble("score");
            Date bir = rs.getDate("bir");
            int age = rs.getInt("age");
            System.out.println(id + ":"  + name + ":" + age + ":" + bir + ":" + score);
        }
        //6:释放资源
        statement.close();
        conn.close();

    }
}

7: PreparedStatement概述

import java.sql.Statement;
/*
使用PreparedStatement预编译sql语句解决sql问题
*/
public class Test09PreparedStatement {
    public static void main(String[] args) throws Exception {
        //1:注册驱动,主要告诉jvm咱们使用的实现类到底是谁???
        Class.forName("com.mysql.jdbc.Driver");
        //2:建立连接url:jdbc:mysql://ip地址:端口/数据库名字
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db2", "root", "root");
        //3:使根据链接获取执行者
        String sql = "UPDATE Student1 SET name='王六',score = 23 WHERE id = ? and name = ?";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setObject(1,3);
        ps.setObject(2,"王四");
        int row = ps.executeUpdate();
        if (row > 0){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }

        //5:释放资源
        ps.close();
        conn.close();
    }
}

2:连接池

1:简介

 

 2:Druid使用

1:使用步骤:

/*
使用Druid创建数据库链接池
1:先将 druid-1.1.12.jar 和 mysql-connector-java-5.1.48.jar两个jar包导入
2:导入druid.properties配置文件
3:加载配置文件
4:创建连接池
*/
public class Test12Druid {
    public static void main(String[] args) throws Exception {
        //1:加载配置文件,找到这个文件中的内容
        Properties properties = new Properties();
        InputStream in = Test12Druid.class.getClassLoader().getResourceAsStream("druid.properties");
        properties.load(in);
        System.out.println(properties);
         /*输出:{password=root, initialSize=5, driverClassName=com.mysql.jdbc.Driver,
         maxWait=3000, url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true, 
         username=root, maxActive=10}*/
        //2:创建连接池
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
        Connection connection = dataSource.getConnection();
        System.out.println(connection);//com.mysql.jdbc.JDBC4Connection@69b794e2


        //***************************8
        System.out.println("当前property文件的位置在" + System.getProperty("user.dir"));

        /*当前property文件的位置在D:\IDEAProject\02web\web01*/
    }
}

3:JDBC案例

package com.itheima.ke.test14_anli;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.itheima.ke.test14_anli.pojo.Brand;
import org.junit.Test;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class TestDruid {
    /**
     * 查询所有
     * 1. SQL:select * from tb_brand;
     * 2. 参数:不需要
     * 3. 结果:List<Brand>
     */

    @Test
    public void testSelectAll() throws Exception {
        //1. 获取Connection
        //3. 加载配置文件
        Properties prop = new Properties();
       //InputStream in = Test12Druid.class.getClassLoader().getResourceAsStream("druid.properties");

        prop.load(new FileInputStream("src/druid.properties"));
        //4. 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

        //5. 获取数据库连接 Connection
        Connection conn = dataSource.getConnection();
        //2. 定义SQL
        String sql = "select * from tb_brand;";    
        //3. 获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //4. 设置参数
        //5. 执行SQL
        ResultSet rs = pstmt.executeQuery();
        //6. 处理结果 List<Brand> 封装Brand对象,装载List集合
        Brand brand = null;
        List<Brand> brands = new ArrayList<>();
        while (rs.next()){
            //获取数据
            int id = rs.getInt("id");
            String brandName = rs.getString("brand_name");
            String companyName = rs.getString("company_name");
            int ordered = rs.getInt("ordered");
            String description = rs.getString("description");
            int status = rs.getInt("status");
            //封装Brand对象
            brand = new Brand();
            brand.setId(id);
            brand.setBrandName(brandName);
            brand.setCompanyName(companyName);
            brand.setOrdered(ordered);
            brand.setDescription(description);
            brand.setStatus(status);

            //装载集合
            brands.add(brand);
        }
        System.out.println(brands);
        //7. 释放资源
        rs.close();
        pstmt.close();
        conn.close();
    }



    /**
     * 添加
     * 1. SQL:insert into tb_brand(brand_name, company_name, ordered, description, status) values(?,?,?,?,?);
     * 2. 参数:需要,除了id之外的所有参数信息
     * 3. 结果:boolean
     */
    @Test
    public void testAdd() throws Exception {
        // 接收页面提交的参数
        String brandName = "香飘飘";
        String companyName = "香飘飘";
        int ordered = 1;
        String description = "绕地球一圈";
        int status = 1;

        //1. 获取Connection
        //3. 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //4. 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //5. 获取数据库连接 Connection
        Connection conn = dataSource.getConnection();
        //2. 定义SQL
        String sql = "insert into tb_brand(brand_name, company_name, ordered, description, status) values(?,?,?,?,?);";
        //3. 获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //4. 设置参数
        pstmt.setString(1,brandName);
        pstmt.setString(2,companyName);
        pstmt.setInt(3,ordered);
        pstmt.setString(4,description);
        pstmt.setInt(5,status);

        //5. 执行SQL
        int count = pstmt.executeUpdate(); // 影响的行数
        //6. 处理结果
        System.out.println(count > 0);

        //7. 释放资源
        pstmt.close();
        conn.close();
    }


    /**
     * 修改
     * 1. SQL:

     update tb_brand
     set brand_name  = ?,
     company_name= ?,
     ordered     = ?,
     description = ?,
     status      = ?
     where id = ?

     * 2. 参数:需要,所有数据
     * 3. 结果:boolean
     */

    @Test
    public void testUpdate() throws Exception {
        // 接收页面提交的参数
        String brandName = "香飘飘";
        String companyName = "香飘飘";
        int ordered = 1000;
        String description = "绕地球三圈";
        int status = 1;
        int id = 4;

        //1. 获取Connection
        //3. 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //4. 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //5. 获取数据库连接 Connection
        Connection conn = dataSource.getConnection();
        //2. 定义SQL
        String sql = " update tb_brand\n" +
                "         set brand_name  = ?,\n" +
                "         company_name= ?,\n" +
                "         ordered     = ?,\n" +
                "         description = ?,\n" +
                "         status      = ?\n" +
                "     where id = ?";

        //3. 获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);

        //4. 设置参数
        pstmt.setString(1,brandName);
        pstmt.setString(2,companyName);
        pstmt.setInt(3,ordered);
        pstmt.setString(4,description);
        pstmt.setInt(5,status);
        pstmt.setInt(6,id);

        //5. 执行SQL
        int count = pstmt.executeUpdate(); // 影响的行数
        //6. 处理结果
        System.out.println(count > 0);

        //7. 释放资源
        pstmt.close();
        conn.close();
    }

    /**
     * 删除
     * 1. SQL:
     delete from tb_brand where id = ?
     * 2. 参数:需要,id
     * 3. 结果:boolean
     */
    @Test
    public void testDeleteById() throws Exception {
        // 接收页面提交的参数
        int id = 4;
        //1. 获取Connection
        //3. 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //4. 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //5. 获取数据库连接 Connection
        Connection conn = dataSource.getConnection();
        //2. 定义SQL
        String sql = " delete from tb_brand where id = ?";
        //3. 获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //4. 设置参数
        pstmt.setInt(1,id);
        //5. 执行SQL
        int count = pstmt.executeUpdate(); // 影响的行数
        //6. 处理结果
        System.out.println(count > 0);

        //7. 释放资源
        pstmt.close();
        conn.close();
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值