出现明明SQL语句没问题,但是却无法通过代码查询到结果的问题。

问题:SQL语句查询不到记录,导致空指针异常
SQL语句:

select * from mixinfo where infotype='网站简介'

代码:

publicList<HashMap> select(String sql)
{ 
System.out.println(sql);
List<HashMap> list = new ArrayList();
try {
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(sql);
    ResultSetMetaData rsmd = rs.getMetaData();

    while(rs.next())
    {
        HashMap map = new HashMap();
        int i = rsmd.getColumnCount();
        for(int j=1;j<=i;j++)
        {
            if(!rsmd.getColumnName(j).equals("ID"))
            {
                String str = rs.getString(j)==null?"": rs.getString(j);
                if(str.equals("null"))str = "";
                map.put(rsmd.getColumnName(j), str);
            }
            else
                map.put("id", rs.getString(j));
        }
        list.add(map);
    }
    rs.close();
    st.close();
} catch (SQLException e) {
    // TODO Auto-generated catch block

    if(sql.equals("show tables"))
    list = select("select table_name from   INFORMATION_SCHEMA.tables");
    else
        e.printStackTrace();
}
return list;
}

原因:
可是是因为SQL语句中的中文字符传递的时候乱码了,我遇见的问题是这个。

解决办法:在连接SQL的URL中添加?【useUnicode=true&characterEncoding=UTF-8】
若URL在xml配置文件中配置的则在URL后添加?【useUnicode=true&amp;characterEncoding=UTF-8

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值