(补充了代码,上个提问老师可以不看了,谢谢)使用Druid连接池查询表格信息后,打印输出信息位置很奇怪

(补充了代码,上个提问老师可以不看了,谢谢)使用Druid连接池查询表格信息后,打印输出信息位置很奇怪

问题描述:

完成代码后测试了很多次,发现控制台输出Druid的系统信息都在查询表格信息的中间


相关代码:

/**
 * 程序入口类,接收用户输入,使用switch判断并选择功能
 */
public class GoodsApp {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.println("1 - 查询商品信息");
        System.out.println("2 - 价格区间查询商品信息");
        System.out.println("3 - 添加商品");
        System.out.println("4 - 修改商品价格");
        System.out.println("5 - 删除商品");
        System.out.println("6 - 使用Druid连接池查询商品信息");
        System.out.print("请选择功能:");
        int cmd = in.nextInt();

        Command command = null;
        switch (cmd) {
            case 1:
                command = new QueryCommand();
                command.execute();
                break;

            case 2:
                command = new PstmtQueryCommand();
                command.execute();
                break;

            case 3:
                command = new InsertCommand();
                command.execute();
                break;

            case 4:
                command = new UpdateCommand();
                command.execute();
                break;

            case 5:
                command = new DeleteCommand();
                command.execute();
                break;

            case 6:
                command = new DruidQueryCommand();
                command.execute();
                break;
        }
    }
}


/**
 * 实现使用连接池查询所有表格数据的功能
 */
public class DruidQueryCommand implements Command {
    @Override
    public void execute() {
        // 1. 加载属性文件
        Properties properties = new Properties();
        String propertyFile = DruidQueryCommand.class.getResource("/druid-config.properties").getPath();
        try {
            propertyFile = URLDecoder.decode(propertyFile, "UTF-8");
            properties.load(new FileInputStream(propertyFile));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            // 2. 获取DataSource数据源对象
            DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

            // 3. 创建数据库连接
            conn = dataSource.getConnection();
            pstmt = conn.prepareStatement("SELECT * FROM t_goods");
            rs = pstmt.executeQuery();
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                Float price = rs.getFloat("price");
                String desp = rs.getString("desp");
                Date createDate = rs.getDate("create_time");
                System.out.println(id + " - " + name + " - " + price + " - " + desp + " - " + createDate);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            DbUtils.closeConnection(rs, pstmt, conn);
        }
    }
}


相关截图:

https://img1.sycdn.imooc.com//climg/631d9ef409db0ad603240231.jpg

选择6号功能


https://img1.sycdn.imooc.com//climg/631d9f1a090d65db08240264.jpg

发第二个贴子时测试还是先输出查询的第一行信息“手机”,然后才打印红色字体的Druid系统信息,强迫症感觉很奇怪,不知道是什么问题造成的,希望老师解答,谢谢!

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,测试运行上述代码没有问题,如下所示:

https://img1.sycdn.imooc.com//climg/631fecca093916cc06380549.jpg

出现这种情况存在idea加载程序缓慢从而导致顺序错落,但对程序运行实现没有任何影响,同学可尝试重新执行程序

祝学习愉快~

  • Macrohard 提问者 #1

    了解,谢谢老师的解答,我这两天学习的时候都会重新运行一下,但是都没有任何的变化,像老师说的“idea加载程序缓慢”,那也就是说是我电脑系统的问题啦?应该重新运行也不会有改变了,所以就是说可能我换一台电脑运行就正常显示了?知道不是我程序出错就好了

    2022-09-13 10:43:27
  • 好帮手慕小脸 回复 提问者 Macrohard #2

    同学你好,重新运行也可能是有变化的,因为idea加载程序缓慢并不是一直缓慢的,就像电脑卡顿一样,时好时坏,所以同学这里可尝试重新执行程序试一下~

    祝学习愉快~

    2022-09-13 11:04:42
  • Macrohard 提问者 回复 好帮手慕小脸 #3

    好的,谢谢老师,今天重启以后还是没有效果的,不过程序书写没问题就好,电脑系统问题也没办法,哈哈

    2022-09-13 11:51:38
jessicap 2022-09-11 17:46:35

你用Dbutils,通常像老师讲的应该是实例化执行器QueryRunner,使用QueryRunner来执行SQL语句,应该是在QueryRunner执行SQL语句的时候才打印红色系统信息。

但是你用的PreperStatement,所以造成这样错乱的打印结果。


  • 提问者 Macrohard #1

    谢谢你的解答,不过我看不懂,QueryRunner我并没有学过,我还是等等看假期以后老师怎么解答吧

    2022-09-11 20:37:00
  • 得按顺序来啊,dbutils和queryrunner课程里都在一起啊,我也是刚学完jdbc
    2022-09-11 20:47:05
  • 提问者 Macrohard 回复 jessicap #3

    我今天看到视频啦,因为你说的QueryRunner是在后面的课程里,但是这个自由编程题目是在Commons DBUtils之前的,昨天我还没学到,所以我题目里使用的DBUtils是之前自定义的工具类,不是Apache的

    2022-09-12 13:12:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师