雪梨篮儿 2024-01-30 10:44 采纳率: 75.9%
浏览 4
已结题

appache-dbutils运行结果出不来

您好,下面这段代码,运行后,list集合打印出来是空数组【】,没有内容 显示。其中admin是mysql中的一张表,里面有用户信息。


```java
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import utils.JDBCUtils;

import java.sql.Connection;
import java.util.List;

public class DBUtils_USE {
    public static void main(String[] args) throws Exception{
        new DBUtils_USE().testQueryMany();
    }
    public void testQueryMany() throws Exception {
        Connection connection = JDBCUtils.getConnection();
        QueryRunner queryRunner = new QueryRunner();
        String sql = "select `name` , pwd from admin where pwd = ? ";
        List<Admin> list = queryRunner.query(connection, sql, new BeanListHandler<>(Admin.class),"'1234'");
        System.out.println("list out as:");
        for(Admin admin : list){
            System.out.println(admin);
            System.out.println("====");
        }
        System.out.println(list);
        JDBCUtils.close(null,null,connection);
    }
}
class Admin {
    private String name;
    private String pwd;

    public Admin(String name, String pwd) {
        this.name = name;
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "Admin{" +
                "name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}



```

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-30 10:44
    关注

    引自免费微信小程序:皆我百晓生

    问题分析: 代码中使用了Apache的DBUtils库进行数据库操作,但是执行查询操作后,无法获得正确的结果,返回的List集合为空。

    解决方案: 经过检查代码,发现可能存在以下问题:

    1. SQL语句中的参数传递问题:在代码中使用了参数占位符?来表示查询条件,但是参数值使用了单引号包裹,可能导致查询失败。推荐使用预编译语句来设置参数,避免引号的干扰。
    2. 数据库连接问题:检查数据库连接是否正常,并且表名和字段名是否正确。
    3. 实体类字段匹配问题:确保实体类Admin的字段名与查询结果集中的字段名保持一致。

    下面按照问题逐一解决:

    1. 修改SQL语句中的参数传递方式: 将以下行代码

    List<Admin> list = queryRunner.query(connection, sql, new BeanListHandler<>(Admin.class),"'1234'");
    

    修改为

    List<Admin> list = queryRunner.query(connection, sql, new BeanListHandler<>(Admin.class), "1234");
    

    移除单引号,以保持参数的正确性。

    2. 检查数据库连接及表名字段名: 确保数据库连接正常,并且"admin"表中存在"name"和"pwd"字段。

    3. 确认实体类字段与查询结果字段匹配: 验证Admin类中的namepwd字段是否与数据库表中的字段名保持一致。

    如果以上问题都检查并排除,还是无法正常输出结果,请提供以下信息:

    1. 数据库连接配置(如数据库URL、用户名、密码)。
    2. 数据库表结构(表名、字段名)。
    3. 查询结果(运行SQL语句后的返回结果)。

    根据提供的信息,我将进一步帮助您解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月8日
  • 已采纳回答 1月31日
  • 创建了问题 1月30日

悬赏问题

  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振