首页 > 其他分享 >JDBC p6 ApDBUtils

JDBC p6 ApDBUtils

时间:2023-08-02 10:44:18浏览次数:33  
标签:ApDBUtils JDBC p6 ArrayList resultSet connection preparedStatement actors id

ApDBUtils

引出

问题分析:

  1. 关闭 connection 之后,resultSet 结果集无法使用。

  2. resultSet 不利于数据的管理

  3. 示意图:

自己完成封装

package com.hspedu.jdbc.datasource;

import org.junit.jupiter.api.Test;

import java.sql.*;
import java.util.ArrayList;


public class JDBCUtilsByDruid_test {

    // 使土方法解决ResultSet 封装 => ArrayList
    @Test
    public void testSelectToArrayList(){
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        String sql = "select * from actor where id >= ?";
        ArrayList<Actor> actors = new ArrayList<>();

        try {
            connection = JDBCUtilsByDruid.getConnection();
            System.out.println(connection.getClass());//运行类型class com.alibaba.druid.pool.DruidPooledConnection
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "1");
            resultSet = preparedStatement.executeQuery();


            // 如果在这里将connection关闭,接下来将会报错
            // 因为resultSet结果集 是和connection关联的,connection关闭了结果集就不能用了,不利与多次复用
//            connection.close();//报错:java.sql.SQLException: Operation not allowed after ResultSet closed
            while (resultSet.next()){
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String sex = resultSet.getString("sex");
                Date borndate = resultSet.getDate("borndate");
                String phone = resultSet.getString("phone");

                //把得到的resultSet对象封装到 Actor对象,放入到list集合中
                actors.add(new Actor(id, name, sex, borndate, phone));
            }

            System.out.println("actors集合数据 = " + actors);
            for (Actor actor : actors) {
                System.out.println("id" + actor.getId());
            }

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        //关闭
        JDBCUtilsByDruid.close(resultSet, preparedStatement, connection);

        //因为ArrayList 和 connection 没有关联
//        return actors;
    }
}

标签:ApDBUtils,JDBC,p6,ArrayList,resultSet,connection,preparedStatement,actors,id
From: https://www.cnblogs.com/zh-Note/p/17583085.html

相关文章

  • Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: int
    执行mybatis的mapper方法时,报错了这个错。通过网上查找,发现了是JDK版本和oracle版本不一致导致的。(我直接从JDK1.8换成JDK11就可以了) 以下内容转自:FailedtoobtainJDBCConnection;nestedexceptionisjava.sql.SQLException:oracle.jdbc.OracleDriver_小沈同学_的博客-CS......
  • 【死亡小学期第二章:没头脑和不高兴】数据库jdbc系统
    自己做一个JDBC的数据库系统,因为这个一直做嘛,所以很简单啦,并没有想提高技术拔拔高啥的,就想做一个简单的,然后自己感兴趣的内容。让自己快乐快乐那才叫做意义~~~~~~~kkkk学到的东西: 展示的第一个页面<welcome-file-list><welcome-file>login/login.jsp</welcome-file>......
  • JDBC从入门到精通深入学习路线图?
    JDBC从入门到精通深入学习路线图?JDBC从入门到精通深入学习路线图?学习JDBC(JavaDatabaseConnectivity)从入门到精通,可以按照以下深入学习路线图进行:1.Java基础知识:在开始学习JDBC之前,建议先掌握Java的基础知识,包括面向对象编程概念、Java语法、异常处理等等。2.SQL语言:熟悉SQ......
  • 【数据库】编码-基于JDBC--待补充
    参考:https://www.liaoxuefeng.com/wiki/1252599548343744/1321748435828770 关键词:连接池 基本编码<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>......
  • JDBC之连接数据库进行增删改查
    packagecom.example.de1;importorg.junit.Test;importjava.sql.*;publicclassjdbc{privatestaticfinalStringurl="jdbc:mysql://127.0.0.1:3307/test";//默认127.0.0.1:3306,可省,jdbc:mysql:///testprivatestaticfinalStringuser=&qu......
  • JDBC p5 数据库连接池
    数据库连接池传统获取Connection问题分析传统的JDBC数据库使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证IP地址,用户名和密码(0.05~1s时间)。需要数据库连接的时候,就向数据库要求一个,频繁的进行数据库连接操作将占用很多的系统......
  • 15_Spring_JDBCTemplate批操作
    15_Spring_JDBCTemplate批操作一次连接,操作表格里的多条数据,就是批量操作1批量增加2批量修改3批量删除实体类packagecom.msb.pojo;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importjava.io.Serializable;/**@......
  • 14_Spring_JDBCTemplate的使用
    14_Spring_JDBCTemplate的使用JdbcTemplate概述JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等......
  • PPT| 集团SRM项目业务蓝图设计方案P60
    PPT共60页,由于篇幅有限,以下为部分资料,需要PPT资料的朋友可以关注我,私信我。......
  • SFP6012-ASEMI代理海矽美(MHCHXM)快恢复二极管
    编辑:llSFP6012-ASEMI代理海矽美(MHCHXM)快恢复二极管型号:SFP6012品牌:ASEMI芯片个数:2芯片尺寸:102MIL*2封装:TO-247AB恢复时间:75ns工作温度:-40°C~175°C浪涌电流:300A正向电流:60A反向耐压:1200V正向压降:2.4V引脚数量:3漏电流:>10uaSFP6012二极管特性:SFP6012-ASEMI代理海矽美快恢复二极管广泛......