Java从数据库中检索下一个类似项

Java从数据库中检索下一个类似项,java,swing,jdbc,Java,Swing,Jdbc,我有以下代码: Class.forName("oracle.jdbc.driver.Orac. leDriver"); Connectioncon=DriverManager.getCon. nection ("jdbc:oracle:thin:@localhost1521:","sys. tem","zed"); String pb=pricebox.getText(); int pbs=Integer.parseInt(pb); final Pr

我有以下代码:

    Class.forName("oracle.jdbc.driver.Orac.   leDriver");

  Connectioncon=DriverManager.getCon.  nection       ("jdbc:oracle:thin:@localhost1521:","sys.   tem","zed");

 String pb=pricebox.getText();

 int pbs=Integer.parseInt(pb);

final PreparedStatement             ps=con.prepareStatement("selectitem   code,remaining    fromshoppingmallproducts   wheretype='"+typebox.getSelectedIte(+.    "',brand='"+brandbox.getSelectedIt.  +'"');

   final      PreparedStatementps=con.prepareStat.    ement("select     itemcode,remainingfrom     shoppingmallproducts where type=and        brand=? and price>=?");



  ps.setString(1(String)typebox.getSelect.     editem();
  ps.setString(2,          (String)brandbox.getSelectedItem());


ps.setInt(3,pbs);


 final ResultSet     rs=ps.executeQuery();
rs.next();

itm=rs.getString("itemcode");


int rem=rs.getInt("remaining");

final String     remm=String.valueOf(rem);


jta1.append("\n "+itm+"\n"+rem+"\n");
//jta是用于附加数据的jtextpane的名称

next.addActionListener(new     ActionListener()

{
public void

 actionPerformed(ActionEvent as)
{
try {


jta1.removeAll();

jta1.setText("");

rs.next();


String itm=rs.getString("itemcode");



int prc=rs.getInt("price");




int rem=rs.getInt("remaining");


String remm=String.valueOf(rem);




jta1.append("\n "+itm+"\n"+rem.   +"\n");


  drawimage(itm);



 }
现在这个问题属于我的下一个按钮。 如您所见,“下一步”按钮将结果集对象移动到下一行。但我希望它以另一种方式执行。现在假设,我选择Levis作为品牌价格范围2000和类型休闲鞋。现在假设我有3个这样的产品。当我第一次单击go按钮时,它将显示第一个结果。现在我想要的是,当我单击next时,我想要具有指定功能的第二个产品,以及第三个产品。 有没有办法做到这一点?请帮帮我。因为这是我大学项目的最后一项任务,所以我真的很坚持。
我希望我已经把每件事都解释清楚了。Thanx你的问题不是很清楚。但我将试着从我的理解中回答

首先是关于rs.next(); 此光标是指向结果集中一行数据的指针。最初,光标位于第一行之前。方法ResultSet.next将光标移动到下一行。如果光标位于最后一行之后,则此方法返回false

因此,rs.next()指向从运行查询中获得的结果。假设您的表总共有10行,然后根据您在查询中指定的条件(如品牌、价格等),查询返回其中的5行。在这种情况下,rs将指向为您的查询返回的5行。它将被指向结果的第一行之前。当你做rs.next()时;它应该返回作为结果返回的5行中的第一行。此后,每隔rs.next()将返回5个结果行中的下一行。当rs指向第5行并执行rs.next()时,它将返回false,您将知道不存在更多要返回的行

若您并没有以这种方式获得价值,最可能的原因是您的查询。尝试使用代码打印查询返回的所有行

while (rs.next()) {
            int itm = rs.getString("itemcode");
            int price = rs.getString("price");
            int remaining = rs.getString("remaining");

            System.out.println(itm + "\t" + price +
                               "\t" + remaining );
        }
这将把结果打印到控制台供您调试

如果这是打印正确的结果,那么您的查询是正确的。可能的问题是jtextpane中的rs值不正确,并且没有正确地指向它应该指向的位置

注:可变类型的价格应为双倍
另外,若您的问题只是关于返回结果的顺序,那个么您可以在查询中使用orderby。它将允许根据表格的排序顺序(基于列的升序或降序)返回结果

请使用编辑功能格式化代码。已编辑…现在我可以获得解决方案吗?这是不可读的,除了代码中有错误之外<代码>oracle.jdbc.driver.Orac。leDriver(有很多空格)或
selectitem
(而不是
selectitem
)将引发异常。请正确使用代码并删除不必要的换行符。@uoo我的代码工作得很好。。只是我在这里输入了它的一部分,所以对你来说可能会出现一些错误。@raj…thanx谢谢你的帮助…从你所说的我得到,如果我得到5行作为Ans,它将首先打印第一行的数据…然后它将打印第二行的数据,即使数据不是我想要的??我的意思是,如果您的数据库表有10个产品(5个levis,5个pepe),并且您的查询是product==levis,那么将返回5行,所有这些都是levis。rs将指向。用levis.Thanx a lot@raj开始5行..这确实解决了我的问题..:)一如既往..堆栈溢出,如果我的答案对您有帮助,请单击“接受答案”或“向上投票”。总是乐于助人:-)对不起,拉杰,我没有15次重复……但再次感谢你的帮助。。。