JDBC原理,工具类自定义

JDBC(Java DataBase Connectivity)–Java数据库连接


JDBC(一套标准接口)
在这里插入图片描述

流程:

1、工程下导入数据库驱动文件

2、注册驱动

Class.forName("com.mysql.cj.jdbc.Driver");

3、连接数据库

DriverManager.getConnection(URL,user,password)

4、编写SQL语句

5、把SQL语句发给数据库

6、处理SQL执行SQL返回结果

7、释放资源

package com.example;

//通过junit替代Main方法进行单元测试
import org.junit.Test;
import java.sql.*;

public class QuickStart {
    @Test
    public void test() throws ClassNotFoundException, SQLException {
        //1、注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2、连接数据库
        String url = "jdbc:mysql://localhost:3306/db4";
        String user = "root";
        String password = "123456";
        Connection connection = DriverManager.getConnection(url, user, password);
        //3、编写SQL代码
        String sql = "select id,username,password from user";
        //4、把SQL语句发给数据库(执行SQL语句)通过连接创建操作数据库的对
        Statement statement = connection.createStatement();
        //4.1返回为一个结果集
        ResultSet resultSet = statement.executeQuery(sql);
        //5、处理结果,遍历结果集
        while(resultSet.next()){
            int id = resultSet.getInt("id");
            String username = resultSet.getString("username");
            String pwd = resultSet.getString("password");
            System.out.println(id+","+username+","+pwd);
            System.out.println("================================");
        }
        //6、释放资源(断开和数据库的连接)
        connection.close();
        statement.close();
        resultSet.close();
    }

}

JDBC的API解释:


1、DriverManager:驱动管理类–》MySQL5之后的驱动包可以省略注册驱动的步骤

1)注册驱动:DriverManager.registerDriver(new Driver());由于这句代码在Driver类的静态方法中所以在Driver类加载的时候自动注册

2)获取连接

Connection—》getConnection(url,user,password)

url:jdbc:mysql://ip地址(域名):端口号/要连接的数据库名称?参数键值对

MySQL8.0的一般通过下面的URL进行数据库的连接:

jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&characterEncoding=utf8

(useUnicode=true&characterEncoding=utf8)-->防止出现乱码

user:root

password:****


2、Connection数据库连接对象

1)创建执行SQL的对象

Statement stmt=Connection.createStatement()

2)事务管理

开启事务(即相当于设置一个手动提交事务):

Connection.setAutoCommit(false)—>相当于MySQL中的 Start transaction;开启事务

提交事务:

Connection.commit()—>相当于MySQL中的commit;提交事务

回滚事务:

Connetion.rollback()—>相当于MySQL中的rollback;回滚事务


3、Statement对象:

发送SQL语句到数据库执行,回收执行结果为一个结果集(resultSet)

它对应的SQL操作方法:

  • executeQuery:用于执行返回单个结果集(resultSet)的语句,例如 SELECT 语句。
  • executeUpdate:用于执行 INSERTUPDATEDELETE—DML 语句,以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLEDROP TABLE。DML语句它返回一个整数,指示受影响的行数。DDL语句返回为0的时候为成功
  • execute:用于执行返回多个结果集、多个更新计数或两者组合的语句。

4、resultSet结果集对象(开始的时候指向结果集中的第一个元素)

在这里插入图片描述

结果集和select语句执行成功之后的表一样,所以如果在select语句中有取别名的操作的时候,

获取数据的值为别名

select id,username as name from user;

resultSet.getString(“name”)—>这里必须写name,而不能写原有的字段名username

不同类型SQL执行成功的条件

DML:row>0

DDL:row=0

DQL:rs.next()为真


登录综合案例:

public class LoginTest {
    // 登录测试
    @Test
    public void loginTest() throws ClassNotFoundException, SQLException {
        //1、注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2、连接数据库
        final String RUL = "jdbc:mysql://127.0.0.1:3306/db4?useUnicode=true&characterEncoding=utf-8";
        final String USER = "root";
        final String PASSWORD = "123456";
        Connection conn = DriverManager.getConnection(RUL, USER, PASSWORD);
        //3、编写SQL语句
        String username = "zhangsan";
        String password = "123";
        String sql = "select username,password" +
                    " from user " +
                    "where username='" + username + "' and password='" + password + "'";
        //4、执行SQL语句
        // 4.1、获取操作数据库的对象
        Statement statement = conn.createStatement();
        //4.2、执行SQL语句
        ResultSet resultSet = statement.executeQuery(sql);
        //5、处理结果
        if (resultSet.next()){
            //获取结果集中的用户名,密码进行对比
            String usernameDB = resultSet.getString("username");
            String passwordDB = resultSet.getString("password");
            if (username.equals(usernameDB) && password.equals(passwordDB)){
                System.out.println("恭喜"+username+"登录成功");
            }else {
                System.out.println("用户名或密码错误");
            }
        }
        //6、关闭资源从下往上依次关闭
        resultSet.close();
        statement.close();
        conn.close();
    }
}

**自定义JDBC工具类 **

//书写工具类的步骤:
/*
1、私有构造方法
2、提供静态方法
*/


工具类(JDBC的工具类)
//书写工具类的步骤:
/*
    1、私有构造方法
    2、提供静态方法
 */

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

public class JdbcUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/db4";
    private static final String USER = "";
    private static final String PWD = "";
    //注册驱动,只需要注册一次所以将其放在静态代码块中,在类加载的时候就执行
    static{
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //数据库连接
    public static Connection getConnection() throws SQLException {
        Connection connection = DriverManager.getConnection(URL, USER, PWD);
        return connection;
    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值