首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Google Chart API从数据库生成图表

使用Google Chart API从数据库生成图表
EN

Stack Overflow用户
提问于 2012-03-14 08:11:50
回答 1查看 1.7K关注 0票数 1

我有一个servlet,它应该从google chart api生成一个图像图表,但它不是..下面是我的servlet的代码:

代码语言:javascript
代码运行次数:0
运行
复制
package Graph;

public class Graph extends HttpServlet {

    private static final String DatabaseConnection = null;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Graph() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        // TODO Auto-generated method stub
                OutputStreamWriter writer = new OutputStreamWriter(response.getOutputStream());
                System.out.println("SensorGraph");

                response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                //sensor Id
                String id = request.getParameter("id");
                // limit in the query
                String limit = request.getParameter("limit");
                DatabaseConnection db_connection =  new DatabaseConnection()._instance;
                Connection connection = null;
                try {
                    connection = db_connection.getConnection();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                Statement statement;
                ResultSet resultSet;
                try {
                    statement = (Statement) connection.createStatement();
                    resultSet = statement.executeQuery("select * from Sensor_Entries order by EntryTime asc limit 5)");
                    String values = "";
                    while(resultSet.next()) {
                        String value = resultSet.getString("EntryValue");
                        values += (value) + ",";
                    }
                    System.out.println(values);
                    values = values.substring(0, values.length()-1);


                    String image = "http://chart.apis.google.com/chart?" +
                            "chxr=0,0,1000" +
                            "&chxs=0,676767,12.167,-0.5,l,676767" +
                            "&chxt=y" +
                            "&chs=300x225" +
                            "&cht=ls" +
                            "&chco=3D7930" +
                            "&chds=0,1000" +
                            "&chd=t:" + values+
                            "&chg=14.3,-1,1,1" +
                            "&chls=2,4,0" +
                            "&chma=0,6%7C3" +
                            "&chm=B,C5D4B5BB,0,0,0" +
                            "&chtt=Sensor+Values" +
                            "&chts=F00D0D,14.5";
                    if(request.getParameter("img") != null)
                        out.write("<img src=\"" + image + "\" />");

                    statement = (Statement) connection.createStatement();
                    resultSet = statement.executeQuery("select * from Sensors join " +
                            "(select * from Sensor_Entries order by EntryTime desc) as Sensor_Entries on " +
                            "(Sensors.SensorID=Sensor_Entries.SensorID) where Sensors.SensorID='" + id + "' " +
                            "group by Sensors.SensorID;");

                    ResultSetMetaData resultSetMetaData = (ResultSetMetaData) resultSet.getMetaData();
                    if(resultSet.next()) {
                        writer.write("<table>");
                        for(int i = 1; i < resultSetMetaData.getColumnCount() + 1; i++) {
                            String value = "";
                            int type = resultSetMetaData.getColumnType(i);
                            if(type == Types.INTEGER || type == Types.TINYINT) {
                                value = "" + resultSet.getInt(i);
                            } else if(type == Types.VARCHAR) {
                                value = resultSet.getString(i);
                            } else if(type == Types.TIMESTAMP) {
                                value = resultSet.getTimestamp(i).toString();
                            } else if(type == Types.DOUBLE) {
                                value = "" + resultSet.getDouble(i);
                            }
                            writer.write("<tr>" +
                                    "<td>" + resultSetMetaData.getColumnName(i) + "</td>" +
                                    "<td>" + value + "</td>" +
                                    "</tr>");
                        }
                        writer.write("</table></center>");
                    }
                    else
                        out.write(image);
                    out.flush();
                    out.close();
                } catch (SQLException ignored) { ignored.printStackTrace();  }
            }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
}
}

你能帮我解决这个问题吗?我正在使用eclipse ganymede和Tomcat6来完成这项工作……DatabaseConnection db_connection = new DatabaseConnection()._instance;只是一个连接实例,它是我从一个类中获得的,这个类是为了连接到数据库而特意创建的……

EN

回答 1

Stack Overflow用户

发布于 2012-03-15 06:43:12

...This问题现已解决...Graph的构造函数中的super()不是必需的。这解决了图形不显示的主要问题...

我现在需要能够刷新从EntryValues表中获取数据的整个过程,并重新生成图形……你们中有谁有办法解决这样的问题吗?说每10秒刷新一次?...请注意,我不是试图刷新已经生成的grahp,我想每10秒检索一次数据,将值存储在google图形链接中,最终将生成图形图像…

感谢您的支持,如果有人不得不处理这样的问题,请尽快让我知道…

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9694150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档