目录

1.手动加载数据库驱动类

2.获得连接对象

3.编写sql语句

4.获得执行对象

5.执行sql语句,同时获得结果

6.处理结果

7.关闭连接资源

通用方法

添加数据库驱动类,获得数据库连接对象

 增、删、改的通用方法

通用的查询方法


每个操作都是以下这七个步骤:

  1. 手动加载数据库驱动类
  2. 获得连接对象
  3. 编写sql语句
  4. 获得执行对象
  5. 执行sql语句,同时获得结果
  6. 处理结果
  7. 关闭连接资源(先开的后关)

eg:学生管理系统中的查询操作:

数据库

建表:把序号设为主键(主键是默认非空的),自动递增。

添加数据

IDEA

查询:读取数据库中所有性别为 '男' 的数据

1.手动加载数据库驱动类

        //1.手动加载数据库驱动类:
        Class.forName("com.mysql.cj.jdbc.Driver"); //把驱动类Driver加载到虚拟机

2.获得连接对象

127.0.0.1是 IP 地址(本机回环地址),3306是端口号,jdbc1是数据库的名字

        //2.获得连接对象:
        String url = "jdbc:mysql://127.0.0.1:3306/jdbc1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
        String username = "root";
        String password = "root";
        Connection con = DriverManager.getConnection(url, username, password); //驱动类管理器
        

3.编写sql语句

        //3.编写sql语句
        String sql = "select * from person where sex=?";

4.获得执行对象

        //4.获得执行对象
        PreparedStatement ps = con.prepareStatement(sql);
        System.out.println("请输入要查询的数据的性别:");
        String sex = new Scanner(System.in).next();
        ps.setString(1, sex);//给sql语句里第一个?赋值

5.执行sql语句,同时获得结果

        //5.执行sql语句,同时获得结果:
        ResultSet rs = ps.executeQuery();//结果集对象

6.处理结果

        //6.处理结果:
        System.out.println("序号\t姓名\t\t年龄\t性别");
        while (rs.next()) {
            System.out.println(rs.getInt(1) + "\t"
                    + rs.getString(3) + "\t"
                    + rs.getInt(5) + "\t"
                    + rs.getString(4));
        }

7.关闭连接资源

        //7.关闭连接资源(后开的先关)
        rs.close();
        ps.close();
        con.close();

通用方法

添加数据库驱动类,获得数据库连接对象

这里的jdbc1是数据库的名字,数据库名字叫什么就些什么

    public Connection getCon() {
        Connection con = null;
        try {
            //1.手动添加数据库驱动类
            Class.forName("com.mysql.cj.jdbc.Driver");//把驱动类Driver加载到虚拟机
            //2.获得数据库连接对象:
            String url = "jdbc:mysql://127.0.0.1:3306/jdbc1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
            String username = "root";
            String password = "root";
            con = DriverManager.getConnection(url, username, password);//驱动类管理器
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

 增、删、改的通用方法

    //增,删,改 的通用方法
    public int dtUpdate(String sql,Object...obj){//3.编写sql语句
        Connection con = getCon();//1,2步
        PreparedStatement ps=null;
        int count = 0;
        try {
            ps = con.prepareStatement(sql);//4.获得执行对象
            for (int i = 0; i < obj.length; i++) {
                ps.setObject(i + 1, obj[i]);
            }
            count = ps.executeUpdate();//5.执行sql语句   6.返回,谁调谁处理
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeAll(con, ps, null);//7.关闭资源
        }
        return count;
    }

通用的查询方法

    //通用的查询方法
    public ArrayList dtQuery(String sql,Class cla, Object...obj){
        ArrayList list = new ArrayList();
        Connection con = getCon();
        PreparedStatement ps =null;
        ResultSet rs = null;
        try {
            ps = con.prepareStatement(sql);
            for (int i = 0; i < obj.length; i++) {
                ps.setObject(i + 1, obj[i]);
            }
            rs = ps.executeQuery();
            while (rs.next()) {
                Object o = cla.newInstance();
                Field[] fields = cla.getDeclaredFields();
                for (Field f : fields) {
                    f.setAccessible(true);
                    f.set(o, rs.getObject(f.getName()));
                }
                list.add(o);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }finally {
            closeAll(con,ps,rs);
        }
        return list;
    }

--->合起来就是数据库工具类DBHelper,通过反射实现增删改查的操作

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐