天天看点

JDBC 操作数据库JDBC简介:JDBC架构:JDBC操作数据库实例:

JDBC简介:

JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组成。使用JDBC访问数据库的基本步骤如下:

  • 加载JDBC驱动程序
  • 建立数据库连接
  • 创建操作数据库SQL的对象
  • 执行语句并分析执行结果
  • 关闭连接

操作实例:

一、操作mysql数据库

MySQL安装方法

二、下载驱动

要在程序中连接mysql数据库对其进行操作,我们还需要下载驱动Mysql-Connector/J,这是mysql为java的数据库连接开发的库,同时官网上也有类似为其他语言的库,比如Connectors/.Net , Connectors/php , Connectors/C++,下载驱动之后将驱动导入项目文件。

点击下载驱动

三、连接MySQL数据库

  1. 定义连接数据库的三个常量:URL、USERNAME、PASSWORD
  2. 定义数据库的连接对象
  3. 数据库连接(1、加载驱动 2、驱动管理得到数据库的连接并返回一个数据库对象)
  4. 关闭数据库连接
  5. main函数进行测试

代码如下:

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

public class DB_Helper {
    public static final String URL = "jdbc:mysql://localhost:3306/company?characterEncoding=utf8&useSSL=false&serverTimezone=UTC";
    public static final String USERNAME = "root";
    public static final String PASSWORD = "123456";

    // 定义数据库的连接对象
    public static Connection conn;
    // 数据库连接对象
    public static Connection getConn(){
        try {
            // 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            try {
                // 驱动管理得到数据库的连接并返回一个数据库对象
                conn= DriverManager.getConnection(URL, USERNAME, PASSWORD);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return conn;
    }
    // 关闭数据库连接
    public static void closeConn(Connection conn){
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        System.out.println(DB_Helper.getConn());
    }
}

           

结果如下:

JDBC 操作数据库JDBC简介:JDBC架构:JDBC操作数据库实例:

JDBC架构:

JDBC API支持用于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成:

  • JDBC API:提供应用程序到JDBC管理器连接。
  • JDBC驱动程序API:支持JDBC管理器到驱动程序连接。

以下是架构图,它显示了驱动程序管理器相对于JDBC驱动程序和Java应用程序的位置:

JDBC 操作数据库JDBC简介:JDBC架构:JDBC操作数据库实例:

JDBC操作数据库实例:

一、在MySQL数据库中构建一个表

JDBC 操作数据库JDBC简介:JDBC架构:JDBC操作数据库实例:

二、编写程序

  • 创建mysql_conn,存放DB_Helper类,用来连接数据库
  • 创建entity包,存放Emp类,作为用户的实体类
  • 创建dao包,存放Emp_dao接口,用来定义方法
  • 创建dao_impl包,存放接口的实现类Emp_impl
  • 创test包,存放Test测试类

一、DB_Helper类

详细见上方mysql数据库

二、Emp类

// 用户的实体类

public class Emp {
    private int empno;
    private String ename;
    private String job;
    private String mgr;

    public int getEmpno() {
        return empno;
    }

    public void setEmpno(int empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public String getMgr() {
        return mgr;
    }

    public void setMgr(String mgr) {
        this.mgr = mgr;
    }

    // 定义有参的构造方法
    public Emp(int empno, String ename, String job, String mgr) {
        super();
        this.empno = empno;
        this.ename = ename;
        this.job = job;
        this.mgr = mgr;
    }
    // 有参的构造方法(empon是自增,不用进行赋值)
    public Emp(String ename, String job, String mgr) {
        super();
        this.ename = ename;
        this.job = job;
        this.mgr = mgr;
    }
    // 定义无参的构造方法

    public Emp() {
        super();
    }
}
           

三、Emp_dao 接口

public interface Emp_dao {
    // 查询所有的用户信息,并返回
    public List<Emp> findAllUser();

    // 查询某个用户的信息并返回
    public Emp findUserById(int id);
}
           

四、Emp_impl实现类

import dao.Emp_dao;
import entity.Emp;
import mysql_conn.DB_Helper;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Emp_impl implements Emp_dao {
    // 定义查询所有用户信息的实现类
    @Override
    public List<Emp> findAllUser() {
        List<Emp> lists = new ArrayList<Emp>();
        // 1、获得数据库的连接对象
        Connection conn = DB_Helper.getConn();
        // 2、书写SQL语句操作数据表
        String sql = "select * from emp";
        // 3、预编译SQL语句
        try {
            PreparedStatement pps = conn.prepareStatement(sql);
            // 4、执行查询命令
            ResultSet resultSet = pps.executeQuery();
            // 5、循环读取结果集中的数据
            while (resultSet.next()){   // 如果结果集中有数据返回true
                // 6、 把结果集中的数据读取出来赋值给用户的属性
                Emp emp = new Emp();
                emp.setEmpno(resultSet.getInt(1));
                emp.setEname(resultSet.getString(2));
                emp.setJob(resultSet.getString(3));
                emp.setMgr(resultSet.getString(4));
                lists.add(emp);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return lists;
    }

    // 定义查询某个用户信息的实现类
    @Override
    public Emp findUserById(int id) {
        Emp emp = null;
        // 1、获得数据库的连接对象
        Connection conn = DB_Helper.getConn();
        // 2、书写SQL语句操作数据表
        String sql = "select * from emp WHERE empno=?";
        // 3、预编译SQL语句
        try {
            PreparedStatement pps = conn.prepareStatement(sql);
            // 4、给SQL语句占位符赋值
            pps.setInt(1,id);
            // 5、执行查询命令
            ResultSet resultSet = pps.executeQuery();
            // 6、循环读取结果集中的数据
            while (resultSet.next()){   // 如果结果集中有数据返回true
                // 7、 把结果集中的数据读取出来赋值给用户的属性
                emp = new Emp();
                emp.setEmpno(resultSet.getInt(1));
                emp.setEname(resultSet.getString(2));
                emp.setJob(resultSet.getString(3));
                emp.setMgr(resultSet.getString(4));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return emp;
    }
}

           

五、Test测试类

public class Test {
    public static void main(String[] args) {
        // 查询到所有的用户
        Emp_impl eil = new Emp_impl();
        List<Emp> lists = eil.findAllUser();
        for (Emp emp : lists) {
            System.out.println(emp.getEmpno()+"\t"+emp.getEname()+"\t"+emp.getJob()+"\t"+emp.getMgr());
        }

        // 查询到单个用户
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入想要查询的编号:");
        int number = scanner.nextInt();
        Emp user = eil.findUserById(number);
        if (user!=null){
            System.out.println(user.getEmpno() + "\t" + user.getEname() + "\t" + user.getJob() + "\t" + user.getMgr());
        }

    }
}

           

结果如下:

JDBC 操作数据库JDBC简介:JDBC架构:JDBC操作数据库实例: