狂神说JavaMySQL最新教程通俗易懂--JDBC详解笔记

Posted 闲言_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了狂神说JavaMySQL最新教程通俗易懂--JDBC详解笔记相关的知识,希望对你有一定的参考价值。

狂神视频地址

https://www.bilibili.com/video/BV1NJ411J79W?p=45


## 1.数据库驱动   驱动:声卡、显卡

  我们的程序会通过 数据库驱动 和数据库打交道


2.JDBC

  sun 公司为了简化开发 人员的(对数据库的统一)操作,提供一个(Java操作数据库的)规范,俗称JDBC这些规范的实现由具体的厂商去做~

  没有什么是加一层解决不了的

  java.sql
  javax.sql
  还需要导入一个数据库驱动包 mysql-connector-java-x.x.xx.jar


3、第一个JDBC程序

  创建数据库

create database jdbcstudy;

use jdbcstudy;

create table users(
	`id` int primary key,
	`name` varchar(40),
	`password` varchar(40),
	`email` varchar(40),
	`birthday` date
);

insert into users values(1,"闲言博客","321","123@163.com","2000-12-15")
,(2,"闲言","123","123@qq.com","2000-12-31")
,(3,"csdn闲言_","456","123@qq.com","2001-2-27")

  1、创建一个普通项目
  2、添加数据库驱动到项目中

现在lib 目录 可以展开了

package cn.bloghut.lesson01;

import java.sql.*;

/**
 * @author by 闲言
 * @classname JdbcFirstDemo
 * @description TODO
 * @date 2021/9/1 10:05
 */
public class JdbcFirstDemo {
    public static void main(String[] args) {

        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            // useUnicode=true
            // characterEncoding=utf8
            // useSSL=true
            String url = "jdbc:mysql://localhost:3306/jdbcstudy";
            String username = "root";
            String password = "123";

            Connection connection = DriverManager.getConnection(url,username , password);
            //3.连接成功,返回数据库对象
            String sql = "select * from users";
            Statement statement = connection.createStatement();
            //4.执行sql
            ResultSet resultSet = statement.executeQuery(sql);
            //5.遍历结果集
            while (resultSet.next()){
                System.out.println("id:"+resultSet.getString("id")+"  name:"+
                        resultSet.getString("name")
                        +"  password: "+resultSet.getString("password"));
            }
            resultSet.close();
            statement.cancel();
            connection.close();

        } catch (Exception e) {

        }

    }
}

步骤总结

  1. 加载驱动
  2. 创建连接 DriverManager
  3. 获取数据库对象 Statement
  4. 执行SQL
  5. [获取结果集]
  6. 释放连接

DriverManager

//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");//固定写法,加载驱动

//Connection 代表数据库
//数据库设置自动提交

URL

String url = "jdbc:mysql://localhost:3306/jdbcstudy";

jdbc:mysql://主机名:端口号/数据库名?参数1&参数2&参数3

//oracle  --1521
jdbc:oracle:thin:@localhost:1521:sid 

Connection

connection.commit();  //设置提交事务
connection.isReadOnly();//是否只读
connection.setAutoCommit(true);//设置事务自动提交

Statement(执行SQL的对象) prepareStatement()(执行SQL的对象)

statement.executeQuery(sql);//执行查询,返回一个结果集
statement.execute();//执行任何SQL
statement.executeUpdate();//执行更新操作:插入、修改、删除,返回受影响的行数

ResultSet 查询的结果集:封装了程序结果

--- 在不知道类型的情况下使用getObject类型
resultSet.getObject(); 

-- 在知道类型的情况下使用对应类型
resultSet.getString();
resultSet.getBigDecimal();
resultSet.getFloat();
resultSet.getDate();
resultSet.getDouble();
resultSet.getInt();
resultSet.getLong();

遍历,指针

resultSet.next();//移动到下一个
resultSet.beforeFirst();//移动到第一个
resultSet.afterLast();//移动到最后面
resultSet.previous();//移动到前一行
resultSet.absolute(row);//移动到指定行

释放资源

resultSet.close();
statement.cancel();
connection.close();

4、Statement 对象详解

  jdbc中的statement 用于向数据库发送SQL语句,想要完成对数据库的增、删、改、查,只需要通过这个对象向数据库发送增删改查语句即可

  Statement 对象的 executeUpdate方法,用于向数据库 发送增、删、改的SQL语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致数据库几行数据发生了变化)

  Statement. executeQuery()方法用于向数据库发送 查询语句,executeQuery()方法返回代表查询结果的ResultSet对象。

CRUD操作–insert
  使用statement.executeUpdate(String sql)方法完成数据添加操作

Statement statement = connection.createStatement();
String sql = "insert into user(...) values(...)"
int num = statement.executeUpdate(sql);
if(num > 0){
    System.out.println("插入成功");
}

CRUD操作–delete
加粗样式使用statement.executeUpdate(String sql)方法完成数据删除操作

Statement statement = connection.createStatement();
String sql = "delete from user where id = 1"
int num = statement.executeUpdate(sql);
if(num > 0){
    System.out.println("删除成功");
}

CRUD操作–update
  使用statement.executeUpdate(String sql)方法完成数据修改操作

Statement statement = connection.createStatement();
String sql = "update user set name='' where id = 1"
int num = statement.executeUpdate(sql);
if(num > 0){
    System.out.println("修改成功");
}

CRUD操作–select
  使用statement.executeQuery(String sql) 完成查询操作

Statement statement  = connection.createStatement();
String sql = "select * from user";
ResultSet rs = statement.executeQuery(sql);
while(rs.next()){
    //根据获取列的数据类型,分别调用rs的相应方法映射到java对象中
}

代码实现:
1.提取工具类

package cn.bloghut.lesson02.utils;


import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * @author by 闲言
 * @classname JdbcUtils
 * @description TODO
 * @date 2021/9/1 23:03
 */
public class JdbcUtils {
    private static String driver;
    private static String url;
    private static String username;
    private static String password;

    static {
        try {
            InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(in);
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");

            //驱动只加载一次
            Class.forName(driver);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    //获取连接
    public  static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, username, password);
    }

    //释放连接资源
    public static void release(Connection connection, Statement statement, ResultSet resultSet) {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }

}

2.增

package cn.bloghut.lesson02;

import cn.bloghut.lesson02.utils.JdbcUtils;

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

/**
 * @author by 闲言
 * @classname TestInstance
 * @description TODO
 * @date 2021/9/1 23:16
 */
public class TestInsert {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            //1.获取数据库连接
            connection = JdbcUtils.getConnection();
            //2.创建SQL的执行对象
            statement = connection.createStatement();
            //3.执行SQL
            String sql = "insert into users(id,name,password,email,birthday) values(4,'闲言','123','123@qq.com',null) ";
            int num = statement.executeUpdate(sql);
            if (num > 0) {
                System.out.println("插入成功");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JdbcUtils.release(connection, statement, resultSet);
        }
    }
}

3.删

package cn.bloghut.lesson02;

import cn.bloghut.lesson02.utils.JdbcUtils;

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

/**
 * @author by 闲言
 * @classname TestInstance
 * @description TODO
 * @date 2021/9/1 23:16
 */
public class TestDelete {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            //1.获取数据库连接
            connection = JdbcUtils.getConnection();
            //2.创建SQL的执行对象
            statement = connection.createStatement();
            //3.执行SQL
            String sql = "delete from users where id = 4";
            int num = statement.executeUpdate(sql);
            if (num > 0) {
                System.out.println("删除成功");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JdbcUtils.release(connection, statement, resultSet);
        }
    }
}

4.改

package cn.bloghut.lesson02;

import cn.bloghut.lesson02.utils.JdbcUtils;

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

/**
 * @author by 闲言
 * @classname TestInstance
 * @description TODO
 * @date 2021/9/1 23:16
 */
public class TestUpdate {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            //1.获取数据库连接
            connection = JdbcUtils.getConnection();
            //2.创建SQL的执行对象
            statement = connection.createStatement();
            //3.执行SQL
            String sql = "update users set name='update闲言' where id = 2";
            int num = statement.executeUpdate(sql);
            if (num > 0) {
                System.out.println("修改成功");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JdbcUtils.release(connection, statement, resultSet);
        }


    }
}

5.查

package cn.bloghut.lesson02;

import cn.bloghut.lesson02.utils.JdbcUtils;

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

/**
 * @author by 闲言
 * @classname TestInstance
 * @description TODO
 * @date 2021/9/1 23:16
 */
public class TestQuery {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            //1.获取数据库连接
            connection = JdbcUtils.getConnection();
            //2.创建SQL的执行对象
            statement = connection.createStatement();
            //3.执行SQL
            String sql = "select * from users";
            //4.遍历结果集
            resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                System.out.println(resultSet.getString(2));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JdbcUtils.release(connection, statement, resultSet);
        }

    }
}

5.PreparedStatement 对象

以上是关于狂神说JavaMySQL最新教程通俗易懂--JDBC详解笔记的主要内容,如果未能解决你的问题,请参考以下文章

狂神说JavaGit最新教程通俗易懂

git与github的使用Git最新教程通俗易懂学习——狂神说视频笔记

git与github的使用Git最新教程通俗易懂学习——狂神说视频笔记

狂神说JavaSpringBoot最新教程IDEA版通俗易懂

狂神说JavaSpringMVC最新教程IDEA版通俗易懂

vue 狂神教程学习 笔记