ResultSet转换List或直接遍历解决null问题

//以下代码没有声明List tempList = new ArrayList(); ResultSet rs = null; String cols_name = "";
//根据sql语句得到ResultSet后变量都声明了就可以正常运行
//依赖包资源import java.text.DecimalFormat;
//          import java.sql.*;
//          import java.util.*;


          int count=0;
          DecimalFormat myFormatter = new DecimalFormat("0.##");

          //将数字格式化为保留小数点两位,但不补齐小数点后两位,也就是不会因为本身是整数而补小数点后的零
          ResultSetMetaData md = rs.getMetaData();

         //检索此ResultSet对象的列的编号、类型和属性返回此ResultSet对象的列的描述
            while (rs.next())//遍历所有行
            {
                Map data = new HashMap();
                count++;
                for (int i = 0; i < md.getColumnCount(); i++)//遍历此行的所有列
                {
                    cols_name = md.getColumnName(i + 1);//取出列名
                    Object val= rs.getObject(cols_name);
                    if (val instanceof Number)

         //如果是数字类型(可以转化为数字objtoint的意思)则格式化为标准数字格式
                    {
                        val= myFormatter.format(val);
                    }
                        val= (val==null)?"":val;//格式化空值
                    data.put(cols_name, ""+val);

                }
                tempList.add(data);

         //list中没行都是一个map可以list指向的行可以根据字段名去map中取值
             }
         //以上是遍历resultset并将其转换为list
          
            if (tempList!=null && tempList.size()>0)
            for (int i=0;i<tempList.size();i++)
            {
                 Map myMap=(Map)tempList.get(i);
                 String aa=(String)myMap.get("aa");
                 //可以使用aa了
             }
          //以上是遍历list的方法,其中aa为列名
      
========================================华丽分割线============================================
      
            DecimalFormat myFormatter = new DecimalFormat("0.##");
            ResultSetMetaData md = rs.getMetaData();
            while (rs.next())
            {
                for (int i = 0; i < md.getColumnCount(); i++)
                {
                  cols_name = md.getColumnName(i + 1);
                    Object val= rs.getObject(cols_name);
                    if (val instanceof Number)
                    {
                        val= myFormatter.format(val);
                    }
                        val= (val==null)?"":val;

                }
            }

 

 //以上是不转换为list单独遍历resultset并将数字格式化将null转换为""
  //注意不能用这种方式修改resultset只能用在循环输出val的值处理后就要输出了,可以做一些累加工作
  //如果想遍历改造resultset就用上面的转换为list的方法,之后可以再遍历list然后依然根据字段名取出相应的值    

posted @ 2012-11-22 22:36  horizon~~~  阅读(1705)  评论(0编辑  收藏  举报