java JDBC的实例:操作数据库

40 篇文章 0 订阅
4 篇文章 0 订阅

JDBC的相关实例


JDBC简介:

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

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

JDBC架构:

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

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

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

在这里插入图片描述


操作实例:

一、操作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函数进行测试


连接数据库的代码如下

package cn.zbw.Mysql;

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 PWD="123456";

    //   定义连接的方法
    public static Connection conn;

    public static Connection getConn(){
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            conn = DriverManager.getConnection(URL,USERNAME,PWD);
        } catch (SQLException 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(getConn());
    }
}

结果是:
在这里插入图片描述
这就说明成功连接数据库!



JDBC操作数据库的实例:


1.在数据库中首先建一个表:

在这里插入图片描述

2.编写程序:

  • 创建mysql包,存放DB_Helper类,用来连接数据库
  • 创建Entity包,存放Emp类,作为用户的实体类
  • 创建Dao包,存放EmpDao接口,用来定义方法
  • 创建Dao_Impl包,存放接口的实现类EmpDaoImpl
  • 创 Test包,存放 Test测试类

(1)DB_Helper类:

package cn.zbw.Mysql;

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 PWD="123456";

    //   定义连接的方法
    public static Connection conn;

    public static Connection getConn(){
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            conn = DriverManager.getConnection(URL,USERNAME,PWD);
        } catch (SQLException 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(getConn());
    }
}

跟上面连接数据库的代码一样!


(2)Emp类:

package cn.zbw.Mysql.Entity;

public class Emp {
    private String  empno;
    private String ename;
    private String job;
    private String  mgr;
    private String hiredate;
    private double sal;
    private double comm;
    private int deptno;

    public String  getEmpno() {
        return empno;
    }
    public void setEmpno(String  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 String getHiredate() {
        return hiredate;
    }
    public void setHiredate(String hiredate) {
        this.hiredate = hiredate;
    }

    public double getSal() {
        return sal;
    }
    public void setSal(double sal) {
        this.sal = sal;
    }

    public double getComm() {
        return comm;
    }
    public void setComm(double comm) {
        this.comm = comm;
    }

    public int getDeptno() {
        return deptno;
    }
    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }

    public Emp() {
        super();
    }

    public Emp(String  empno, String ename, String job, String  mgr, String hiredate, double sal, double comm, int deptno) {
        this.empno = empno;
        this.ename = ename;
        this.job = job;
        this.mgr = mgr;
        this.hiredate = hiredate;
        this.sal = sal;
        this.comm = comm;
        this.deptno = deptno;
    }
}

(3)EmpDao接口:

package cn.zbw.Mysql.Dao;


import cn.zbw.Mysql.Entity.Emp;

import java.util.List;

public interface EmpDao {
    public List<Emp> findAllEmp();

    public Emp findOneEmp(int empno);
    
}

(4)EmpDaoImpl实现类:

package cn.zbw.Mysql.Dao_Impl;

import cn.zbw.Mysql.DB_Helper;
import cn.zbw.Mysql.Dao.EmpDao;
import cn.zbw.Mysql.Entity.Emp;

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 EmpDaoImpl implements EmpDao {


    @Override
    public List<Emp> findAllEmp() {
        List<Emp> lists = new ArrayList<Emp>();
        Connection conn = DB_Helper.getConn();//1、获得数据库连接对象
        String sql = "select * from emp";//2、书写sql语句操作数据表
        try {
            PreparedStatement ps = conn.prepareStatement(sql);//3、预编译sql语句
            ResultSet rs = ps.executeQuery();//4、执行查询命令
            while (rs.next()) {//5、循环读取表中的数据
                Emp emp = new Emp();
                emp.setEmpno(rs.getString(1));
                emp.setEname(rs.getString(2));
                emp.setJob(rs.getString(3));
                emp.setMgr(rs.getString(4));
                emp.setHiredate(rs.getString(5));
                emp.setSal(rs.getDouble(6));
                emp.setComm(rs.getDouble(7));
                emp.setDeptno(rs.getInt(8));
                lists.add(emp);//6、把读取的数据存入集合
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return lists;
    }


    public Emp findOneEmp(int no) {
        Emp emp = null;
        Connection conn = DB_Helper.getConn();//1、获得数据库连接对象
        String sql = "select * from emp where empno=?";//2、书写sql语句操作数据表
        try {
            PreparedStatement ps = conn.prepareStatement(sql);//3、预编译sql语句
            ps.setInt(1, no);
            ResultSet rs = ps.executeQuery();//4、执行查询命令

            while (rs.next()) {//5、循环读取表中的数据
                emp = new Emp();
                emp.setEmpno(rs.getString(1));
                emp.setEname(rs.getString(2));
                emp.setJob(rs.getString(3));
                emp.setMgr(rs.getString(4));
                emp.setHiredate(rs.getString(5));
                emp.setSal(rs.getDouble(6));
                emp.setComm(rs.getDouble(7));
                emp.setDeptno(rs.getInt(8));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return emp;
    }

}

(5)Test测试类:

package cn.zbw.Mysql.Test;

import cn.zbw.Mysql.Dao.EmpDao;
import cn.zbw.Mysql.Dao_Impl.EmpDaoImpl;
import cn.zbw.Mysql.Entity.Emp;

import java.util.List;

public class Test {
    public static void main(String[] args) {
        EmpDao empno = new EmpDaoImpl();
        List<Emp> list = empno.findAllEmp();
       for (Emp e:list){
            System.out.println(e.getEmpno()+"\t"+e.getEname()+"\t"+e.getJob());
        }

        System.out.println("------------------------------------------------");
        Emp oneEmp = empno.findOneEmp(6);
        if (oneEmp!=null){
            System.out.println(oneEmp.getEmpno()+"\t"+oneEmp.getEname()+"\t"+oneEmp.getJob());
        }
    }
}

结果是:

在这里插入图片描述

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值