我有以下代码:
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按钮时,它将显示第一个结果。现在我希望当我点击下一步时,我希望第二个产品具有指定功能,因此第三个产品。 有没有办法做到这一点?请帮我。我真的很困惑,因为这是我大学项目的最后一项任务。 我希望我已经清楚地解释了每一件事。感谢名单
答案 0 :(得分:0)
你的问题不是很清楚。但我会尝试从我的理解中回答。
此游标是指向ResultSet中一行数据的指针。最初,光标位于第一行之前。 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值不正确并且没有正确指向它。
PS:可变类型的价格应该是双倍的 此外,如果您的问题只是返回结果的顺序,您可以在查询中使用ORDER BY。它将允许根据表格的排序顺序(基于列的升序或降序)返回结果