首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jdbc和使用处理输出

jdbc和使用处理输出
EN

Stack Overflow用户
提问于 2014-08-25 18:09:51
回答 2查看 52关注 0票数 0

使用jdbc,我正在查询我的救护车响应时间数据库。我的目标是使用库将输出处理成统计数据。到目前为止,我成功地查询了我的数据库并将响应时间输出到控制台。我的下一步是在统计上处理这个输出,例如平均值、中间值、模式等等。这是我被困在这里的地方。下面是我的代码。

代码语言:javascript
复制
package javaDatabase;

import java.sql.*;
import org.apache.commons.math3.stat.StatUtils;

public class javaConnect3
{
    public static void main(String[] args)
    {
        Connection conn = null;
        Statement stmt = null;
        try
        {
            conn = DriverManager
                    .getConnection("jdbc:sqlserver://myServerAddress;database=myDatabase;integratedsecurity=false;user=myUser;password=myPassword");
            stmt = conn.createStatement();
            String strSelect = "SELECT M_SecondsAtStatus FROM MManpower WHERE M_tTime > 'august 25, 2014' AND M_Code = 'USAR'";

        ResultSet rset = stmt.executeQuery(strSelect);

        while (rset.next())
        {
            int values = rset.getInt("M_SecondsAtStatus");
            System.out.println(values);
        }
        // I am hoping to derive useful statistics from my database, such as the following.
        // this uses Jakarta Commons Math
        // System.out.println("min: " + StatUtils.min(values));
        // System.out.println("max: " + StatUtils.max(values));
        // System.out.println("mean: " + StatUtils.mean(values));
        // System.out.println("product: " + StatUtils.product(values));
        // System.out.println("sum: " + StatUtils.sum(values));
        // System.out.println("variance: " + StatUtils.variance(values));

    } catch (SQLException ex)
    {
        ex.printStackTrace();
    } finally
    {
        try
        {
            if (stmt != null)
                stmt.close();
            if (conn != null)
                conn.close();
        } catch (SQLException ex)
        {
            ex.printStackTrace();
        }
    }
}

} Eclipse中弹出错误消息,变量“value”为红色下划线;“值不能解析为变量”。我不知道怎样才能让这件事奏效。我不明白如何将我的救护车响应时间从数据库输出到ApacheCommons数学将理解的内容。如何让ApacheCommons数学从我的数据库中获取输出并生成一个统计结果?

EN

回答 2

Stack Overflow用户

发布于 2014-08-25 18:26:48

你需要这样的东西:

代码语言:javascript
复制
List<Double> values = new ArrayList<Double>();
while (rset.next()) {
    values.add(rset.getInt("M_SecondsAtStatus"));
}
double mean = StatsUtils.mean(values.toArray(new Double [](values.size()));

很可能您可以查询数据库中的统计信息。方法的名称取决于数据库:

代码语言:javascript
复制
SELECT avg(M_SecondsAtStatus) 
FROM MManpower 
WHERE M_tTime > 'august 25, 2014' 
AND M_Code = 'USAR'

我认为第二个更有效,因为您不必将所有这些值传递给Java来完成与数据库所能做的计算相同的工作。

票数 0
EN

Stack Overflow用户

发布于 2014-08-26 15:51:16

另一种选择是使用DescriptiveStatistics对象收集所有数据,然后使用它计算所需的汇总统计信息。使用它可以减少执行所有显式类型转换和转换的需要:

代码语言:javascript
复制
DescriptiveStatistics ds = new DescriptiveStatistics();
while(rset.next()) {
    int observation = rset.getInt("M_SecondsAtStatus");
    ds.addValue(observation);
}

System.out.println("min: " + ds.getMin());
System.out.println("max: " + ds.getMax());
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25491893

复制
相关文章

相似问题

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