我有一个连接到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);
}
}
请问任何想法?这有什么问题?
答案 0 :(得分:3)
您尝试在转到第一行之前读取结果集:
if (rs.next()) {
endDate = rs.getString("END_DATE");
}
您的代码充满了不良做法:
result
和rs