黑马程序员JDBC学习笔记

一、JDBC快速入门

package com.feng.jdbc;

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

public class JdbcDemo {
    public static void main(String[] args) throws Exception {

        //1.注册驱动(jdk1.8之后此步骤可以跳过)
        Class.forName("com.mysql.jdbc.Driver");

        //2.获取数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/learn_jdbc";
        String user = "root";
        String password = "******";
        Connection conn = DriverManager.getConnection(url, user, password);

        //3.定义Sql语句
        String sql = "UPDATE user set age=27 WHERE id=1;";


        //4.获取执行SQL的对象statement
        Statement stmt = conn.createStatement();

        //5.执行sql
        int count = stmt.executeUpdate(sql);

        //6.处理结果
        System.out.println(count);

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

二、JDBC-API

1、DriverManager

(1)、注册驱动

在这里插入图片描述

(2)、获取连接

在这里插入图片描述

2、Connection

(1)、获取执行sql的对象

在这里插入图片描述

(2)、事务管理

在这里插入图片描述

package com.feng.jdbc;

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

public class JdbcDemo {
    public static void main(String[] args) throws Exception {


        //1.获取数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/learn_jdbc";
        String user = "root";
        String password = "*******";
        Connection conn = DriverManager.getConnection(url, user, password);

        //2.定义Sql语句
        String sql1 = "UPDATE user set age=27 WHERE id=1;";
        String sql2 = "UPDATE user set age=27 WHERE id=2;";


        //3.获取执行SQL的对象statement
        Statement stmt = conn.createStatement();


        try {
            //开启事务
            conn.setAutoCommit(false);

            //4.执行sql
            int count1 = stmt.executeUpdate(sql1);

            System.out.println(count1);

            //设置异常
            int i = 3/0;
            int count2 = stmt.executeUpdate(sql2);


            //5.处理结果
            System.out.println(count2);

            //提交事务
            conn.commit();

        } catch (Exception e) {

            //回滚事务
            conn.rollback();
            e.printStackTrace();
        }

        //7.释放资源
        stmt.close();
        conn.close();
    }
}
//使用事务管理出现异常时会回滚到之前的状态。

3、Statement:执行SQL语句

在这里插入图片描述

(1)、执行DML和DDL语句

package com.feng.jdbc;

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


public class JdbcDemo2 {
    public static void main(String[] args) throws Exception {


        //1.获取数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/learn_jdbc";
        String user = "root";
        String password = "100228";
        Connection conn = DriverManager.getConnection(url, user, password);

        //2.定义Sql语句:以DML语句为例
        String sql = "INSERT INTO `user`(name,age) value('赵六','52');";


        //3.获取执行SQL的对象statement
        Statement stmt = conn.createStatement();

        //4.执行sql语句
        int count = stmt.executeUpdate(sql);
		
		//根据执行结果判断是否操作成功
        if (count>=1){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }


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

(2)、执行DQL语句

4、ResultSet

在这里插入图片描述
在这里插入图片描述
代码示例

package com.feng.jdbc;

import javax.sound.midi.Soundbank;
import java.sql.*;

public class JdbcDemo2 {
    public static void main(String[] args) throws Exception {


        //1.获取数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/learn_jdbc";
        String user = "root";
        String password = "100228";
        Connection conn = DriverManager.getConnection(url, user, password);

        //2.定义Sql语句
        String sql = "SELECT * from user;";


        //3.获取执行SQL的对象statement
        Statement stmt = conn.createStatement();

        //4.执行sql语句,获的res对象
        ResultSet res = stmt.executeQuery(sql);

        //5.处理结果,遍历res中的所有数据
        //5.1光标下移一行,并判断当前行是否有效
        while (res.next()){
            //5.2获取数据
            int id = res.getInt(1);
            String name = res.getString(2);
            int age = res.getInt(3);

            System.out.println(id);
            System.out.println(name);
            System.out.println(age);
            System.out.println("***************");

        }



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

结果
在这里插入图片描述

5、PreparedStatement

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

三、数据库连接池

1、数据库连接池简介

在这里插入图片描述

2、数据库连接池实现

在这里插入图片描述

3、Druid数据库连接池

(1)、使用步骤

在这里插入图片描述

A、在src目录下配置druid.properties文件,配置内容如下
# 数据库驱动
driverClassName=com.mysql.cj.jdbc.Driver
# 数据库连接
url=jdbc:mysql:///learn_jdbc?useSSL=false&useServerPrepStmts=true
# 数据库用户名
username=root
# 数据库密码
password=*******
#初始化连接数量
initialSize=5
#最大连接数
maxActive=10
#获取连接最大等待时间
maxWait=3000
B、Java代码
package DruidDemo;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Properties;

public class Demo1 {

    public static void main(String[] args) throws Exception {

        //1.导入jar包

        // 2.定义配置文件

        // 3.加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("jdbc-demo\\src\\druid.properties"));

        //4.获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

        //5.获取数据库连接Connection
        Connection conn = dataSource.getConnection();

        System.out.println(conn);

    }
}

结果如下
在这里插入图片描述

四、添加数据代码(删除和修改与之类似)

//加载配置文件
        Properties pro = new Properties();
        pro.load(new FileInputStream("C:\\Users\\fw\\Desktop\\jdbc\\jdbc-demo\\src\\druid.properties"));

        //创建连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(pro);

        //获取连接
        Connection conn = dataSource.getConnection();

        //定义sql语句
        String sql = "INSERT INTO tb_brand(brand_name,company_name,ordered,description,status) VALUES(?,?,?,?,?);";

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

        //传入参数
        String brandName = "oppo";
        String companyName = "oppo有限公司";
        int order = 20;
        String description = "充电5分钟,通话两小时";
        int status = 1;

        pstmt.setString(1, brandName);
        pstmt.setString(2, companyName);
        pstmt.setInt(3, order);
        pstmt.setString(4, description);
        pstmt.setInt(5, status);

        //执行sql
        int count = pstmt.executeUpdate();

        System.out.println(count>0);

        //关闭资源
        pstmt.close();
        conn.close();

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
课程简介 随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单表存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决?分库分表技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解分库分表技术。 课程价值 分库分表技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机分析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授分库分表技术的解决方案,包括:垂直分库、垂直分表、水平分库、水平分表、读写分离,涵盖了分库分表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。 课程优势 本课程不仅讲解多种有效的分库分表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库分表技术应用到生产实践中,解决大数据存储与处理的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值