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

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

以下是架构图,它显示了驱动程序管理器相对于JDBC驱动程序和Java应用程序的位置:
在这里插入图片描述


JDBC操作数据库实例:

一、在MySQL数据库中构建一个表
在这里插入图片描述
二、编写程序

  • 创建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());
        }

    }
}

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


  • 9
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
JDBCJava Database Connectivity)是Java语言操作数据库的标准接口,通过它可以实现对关系型数据库的访问。 JDBC操作数据库的步骤如下: 1. 加载数据库驱动程序:首先需要加载特定数据库的驱动程序,例如MySQL、Oracle等。可以使用Class.forName()方法加载驱动程序。 2. 建立数据库连接:使用DriverManager.getConnection()方法创建一个数据库连接对象。需要传入数据库URL、用户名和密码等参数。 3. 创建Statement对象:创建一个Statement对象,用于向数据库发送SQL语句。 4. 执行SQL语句:使用Statement对象的execute()、executeUpdate()和executeQuery()方法执行SQL语句。 5. 处理结果集:如果执行的SQL语句返回结果集,需要使用ResultSet对象来处理结果集。ResultSet对象包含了查询结果的所有行和列。 6. 关闭数据库连接:使用Connection对象的close()方法关闭数据库连接。 以下是一个简单的JDBC操作数据库的示例代码: ```java import java.sql.*; public class JdbcDemo { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"; String username = "root"; String password = "123456"; try { // 加载MySQL驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 建立数据库连接 Connection conn = DriverManager.getConnection(url, username, password); // 创建Statement对象 Statement stmt = conn.createStatement(); // 执行SQL语句 ResultSet rs = stmt.executeQuery("SELECT * FROM user"); // 处理结果集 while (rs.next()) { System.out.println(rs.getString("username")); } // 关闭数据库连接 conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值