一直报错出不来

一直报错出不来

package com.imooc.jdbc.sample;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.imooc.jdbc.common.DbUtils;
import com.imooc.jdbc.hrapp.entity.Employee;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Properties;

/**
 * Apache DBUtils + Druid联合使用演示
 */
public class DbUtilsSample {
   
private static void query(){
       
Properties properties = new Properties();
       
String propertyFile = DbUtilsSample.class.getResource("/druid-config.properties").getPath();
       
try {
            propertyFile =
new URLDecoder().decode(propertyFile, "UTF-8");
           
properties.load(new FileInputStream(propertyFile));
           
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
           
//利用Apache DbUtils大幅简化了数据的提取过程
           
QueryRunner qr = new QueryRunner(dataSource);
           
List<Employee> list =  qr.query("select * from employee limit ?,10",
                   
new BeanListHandler<>(Employee.class),
                   
new Object[]{10});
           
for (Employee emp : list) {
               
System.out.println(emp.getEname());
            }
        }
catch (Exception e) {
            e.printStackTrace();
        }
    }

   
public static void update(){
       
Properties properties = new Properties();
       
String propertyFile = DbUtilsSample.class.getResource("/druid-config.properties").getPath();
       
Connection conn = null;
       
try {
            propertyFile =
new URLDecoder().decode(propertyFile, "UTF-8");
           
properties.load(new FileInputStream(propertyFile));
           
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
            conn =
dataSource.getConnection();
            conn.setAutoCommit(
false);
           
String sql1 = "update employee set salary=salary+1000 where eno=?";
           
String sql2 = "update employee set salary=salary-500 where eno=?";
           
QueryRunner qr = new QueryRunner();
           
qr.update(conn,sql1,new Object[]{1000});
           
qr.update(conn,sql2,new Object[]{1001});
            conn.commit();
        }
catch (Exception e) {
            e.printStackTrace();
           
try {
               
if(conn != null && !conn.isClosed()) {
                    conn.rollback();
                }
            }
catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
finally {
           
try {
               
if(conn != null && !conn.isClosed()) {
                    conn.close();
                }
            }
catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

   
public static void main(String[] args) {
//        query();
       
update();
    }
}

相关截图:

https://img1.sycdn.imooc.com/climg/66e3b116090a132126021296.jpg

正在回答 回答被采纳积分+1

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

1回答
好帮手慕小蓝 2024-09-13 11:48:56

同学你好,猜测同学使用的依赖版本与课程不一致,因为在高版本中,URLDecoder的构造方法已经私有化,并且decode方法变为了静态方法,所以需要用静态方式进行调用,即

URLDecoder.decode(propertyFile, "UTF-8");

同学可以更换之后看一下是否还会报错。

祝学习愉快~

  • 提问者 陆5004765 #1

    https://img1.sycdn.imooc.com/climg/66e3cfd409b81e9827041688.jpg

    2024-09-13 13:38:40
  • 好帮手慕小蓝 回复 提问者 陆5004765 #2

    同学你好,同学是指控制台乱码问题吗?

    控制台乱码需要先检查Java文件的编码字符集类型,可以在右下角看到如下图的编码字符集类型,将其修改为UTF-8。如果都已经是UTF-8,那么可以添加启动参数。

    启动参数的设置方式是,在右上角的启动按钮位置,点击下拉菜单,选择“Edit Configurations”,然后在“VM options”添加“-Dfile.encoding=UTF-8”,然后再启动运行。

    祝学习愉快~

    2024-09-13 14:26:05
  • 提问者 陆5004765 #3

    https://img1.sycdn.imooc.com/climg/66e3f078094af49526741474.jpg

    2024-09-13 15:57:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
Java工程师 2024版
  • 参与学习       2053    人
  • 提交作业       1490    份
  • 解答问题       1316    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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