如何将oracle数据库中的值汇总到java中?

时间:2012-06-14 17:10:44

标签: java sql oracle jdbc

我有一个连接到Oracle数据库的java应用程序。我有一个表单,用户输入一个名为COMMUNITY_ID的ID,一个名为START_DATE的开始日期和一个名为END_DATE的结束日期。

我希望应用程序在数据库中的表中搜索输入的值,当搜索结果正确时,我希望它显示总值的总和。

我有三种方法;每个方法负责搜索单个文本框。例如,第一种方法total 1搜索COMMUNITY_ID,第二种方法搜索START_DATE,最后一种方法搜索END_DATE

我收到一条错误消息,指出结果集为空或已关闭。我不知道为什么,因为我不明白这个消息。

以下是我的代码。如果有人知道如何修复它,请帮助我。

public void total3()
{
    ResultSet result;
    System.out.println("total 3");

    String endDate = this.EndTxtBox.getText();

    try
    {
        rs=st.executeQuery("select RECIPT_ID,COMMUNITY_ID,VALUE,START_DATE,END_DATE, ITEM_BOUGHT,REASON from RECIPTS where  END_DATE = '" +endDate+"'");
        //display();
        this.EndTxtBox.setText(rs.getString("END_DATE"));
    }
    catch(Exception ex)
    {

        JOptionPane.showMessageDialog(null, "Searched Failed" + ex);
    }

    try
    {
        result =  rs=st.executeQuery("select SUM(VALUE)from RECIPTS where END_DATE = '" +endDate+"'" );
        //result =  rs=st.executeQuery("select RECIPT_ID,COMMUNITY_ID,VALUE,START_DATE,END_DATE, ITEM_BOUGHT,REASON,SUM(VALUE)from RECIPTS group by RECIPT_ID,COMMUNITY_ID,VALUE,START_DATE,END_DATE, ITEM_BOUGHT,REASON ");
    }
    catch(Exception ex)
    {
        JOptionPane.showMessageDialog(null, "Error" + ex);
    }
}

请问任何想法?这有什么问题?

1 个答案:

答案 0 :(得分:3)

您尝试在转到第一行之前读取结果集:

if (rs.next()) {
    endDate = rs.getString("END_DATE");
}

您的代码充满了不良做法:

  • 将UI代码与数据库访问代码混合
  • 捕获异常
  • 当您只对其中一个感兴趣时,选择一大堆行和列
  • 不使用预备陈述
  • 同时使用resultrs
  • 不关闭语句和结果集
  • 使用String变量存储日期
  • 差而且不一致的缩进