将ResultSet数据转换为饼图(Google图表)格式

时间:2016-01-26 07:21:29

标签: java json jdbc charts google-visualization

JDBC结果集的输出是:

OUTPUT in SqlWorkbench

我需要将其转换为:

名为数据的Stringbuffer,其中包含

         [
          ['Tiles', 'Hours per Day'],
          ['Cabs tile',     1375],
          ['recharge tile',      3377],
          ['deals tile',  1603],
          ['jobs tile', 437],
          ['education tile',    247],
          ['shopping tile',    433],
          ['household tile',    220]
        ]

我尝试过使用:

    public static StringBuffer data= new StringBuffer();
ResultSet rs //contains data in it.
ResultSetMetaData rsmd = rs.getMetaData();

         String col1 = rsmd.getColumnName(1);
         String col2 = rsmd.getColumnName(2);
         String col3 = rsmd.getColumnName(3);
         String col4 = rsmd.getColumnName(4);
         String col5 = rsmd.getColumnName(5);
         String col6 = rsmd.getColumnName(6);
         String col7 = rsmd.getColumnName(7);
         String col8 = rsmd.getColumnName(8);
         String col9 = rsmd.getColumnName(9);
         String col10 = rsmd.getColumnName(10);


         data.append("[ ['Tiles', 'Hours per Day'],");

        String formatStr = "%n['%s','%s'],";

         while(rs.next()){

            int total_cols = rs.getMetaData().getColumnCount();
            data.append((String.format(formatStr, col4, rs.getString(col4))));//This line is incorrect
            }
data.append("]");

请注意,数据来自ResultSet的第4列,因为绘制饼图需要相同

基本上,结果集中的数据需要按列提取,而resultSet中只有一列

2 个答案:

答案 0 :(得分:0)

您尝试将结果集转换为Json字符串。因此可以使用java中的JSON Object轻松完成。

参考代码

.....
   JSONArray jsonArray0 = new JSONArray();

        while(rs.next()){
            JSONArray jasub = new JSONArray();
            jasub.add(col4);
            jasub.add(rs.getString(col4));

            jsonArray0.add(jasub);

        }


    System.out.println(jsonArray0.toJSONString());

答案 1 :(得分:0)

使用这样的循环迭代结果行中的列:

ResultSetMetaData metaData = resultSet.getMetaData();
int numColumns = metaData.getColumnCount();
for (int i = 1; i <= numColumns; i++) { // columns are one-indexed
    String columnName = metaData.getColumnLabel(i);
    String value = resultSet.getString(i);
    // …
}