greensure
2017-06-06 09:25
采纳率: 100%
浏览 3.9k
已采纳

java 获取数据库表中的信息,为什么中文字段读出为null

java 获取数据库表中的信息,为什么中文字段读出为null,其他字段为数字都读出来了

 JdbcUtil jdbcUtil = null;
        try{
            jdbcUtil = new JdbcUtil();
            //获取数据库连接
            jdbcUtil.getConnection();
            // 查询结果是一个map,要遍历出来,然后放到对象里
            List<Map<String, Object>> mapList = jdbcUtil.findResult(sql.toString(), paramList);
            if(mapList != null){
                for(Map<String, Object> map : mapList){
                    // 此处把map转化为Student对象
                    Student s = new Student(map);
                    result.add(s);                  

                    // 输出的学生信息,中文字段为null:Student [id=1, stuName=null, age=17, gender=1, address=null]
                    System.out.println( "学生信息:"+ s);
                }
            }
        }catch(SQLException e){
            throw new RuntimeException("查询所有数据异常!", e);
        }finally{
            if(jdbcUtil != null){
                //一定要释放资源
                jdbcUtil.releaseConn();
            }
        }       

数据库查询信息:
图片说明
图片说明

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

13条回答 默认 最新

  • withnoword 2017-06-06 09:31
    已采纳
    • 检查Student构造器,stuName是否有设置
    • 检查数据库,stuName对应字段是否有值
    • 检查stuName时候和对应表字段相符(例如表中是stu_name_
    • 如果以上都正确,打断点,单步调试,实时查看map中的值
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • _1_1_7_ 2017-06-06 09:21

    确定数据库中不是空?
    直接用sql查询语句,查数据库看看

    评论
    解决 无用
    打赏 举报
  • podd 2017-06-06 09:26

    数据库编码设置为UTF-8

    评论
    解决 无用
    打赏 举报
  • qq_38627480 2017-06-06 09:27

    你也要把sql查询数据库所查询出的信息发上啊

    评论
    解决 无用
    打赏 举报
  • Hefei19881002 2017-06-06 09:28

    List> mapList = jdbcUtil.findResult(sql.toString(), paramList); 这行打个断点 然后debug看一下,, 或者把你的完整代码贴出来

    评论
    解决 无用
    打赏 举报
  • 丵鹰 2017-06-06 09:29

    查看sql语句看看有没有查询stuName

    评论
    解决 无用
    打赏 举报
  • 高冷的自卑患者 2017-06-06 09:33

    数据库的字符类型为varchar时,当改字段的值为空时,数据库给的默认值是null,这种情况可以在查询语句中使用函数判断去除null值;
    Oracle的对应函数是nvl(字段,替换的值),MySQL的对应函数是ifnull(字段,对应的值),
    比如:select nvl(zd, '') from table_name,意思是当zd的值为空时,让zd的值变成 ''
    同理,MySQL也是一样:select ifnull(zd, '') from table_name

    评论
    解决 无用
    打赏 举报
  • 飘零ii 2017-06-07 02:09

    你把中文字段 改几个为拼音看看是不是因为中文的问题。排除了这个问题再确定排除问题的思路。

    评论
    解决 无用
    打赏 举报
  • 一点寒芒先至 2017-06-07 02:22

    吧Student 类代码贴出来看看

    评论
    解决 无用
    打赏 举报
  • xhl_2017 2017-06-07 02:40

    1,for(Map map : mapList){这行打个断点 看看每次循环,map中对应位置是否有值。2,在mysql中的数据库编码设置一下

    评论
    解决 无用
    打赏 举报
  • Carpenterz 2017-06-07 03:56

    跟中文字段没关系 主要是你数据库中的 列名stu_name 映射到stuName 你没有映射上去 当然student对象中默认的stuName属性就是null

    评论
    解决 无用
    打赏 举报
  • 鸿礼 2017-06-09 01:42

    Student实体中的stuName变量与map中的key不应不上,你可以做一个处理,将map中的stu_name 转换一下,或者在map中再加一个key为stuName;在Student s = new Student(map)之前加一个 map.put('stuName',map.get("stu_name"));

    评论
    解决 无用
    打赏 举报
  • AlesS4 2019-04-30 09:24

    我今天出现了一样的问题,将查出来为null的字段的编码设置成utf-8就行了

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题