我怎样才能让这个程序也打印列表中的第一个条目?
Posted
技术标签:
【中文标题】我怎样才能让这个程序也打印列表中的第一个条目?【英文标题】:How can I get this program to also print the first entry in the list too? 【发布时间】:2009-01-19 19:42:08 【问题描述】:我无法显示查询中返回多个答案的第一个条目。例如,结果集为 5 的搜索将返回第二个到第五个,而错过第一个条目。如果我搜索具有一个条目作为输出的内容,它不会返回任何内容,只会挂起,因为它是数据库中的第一个也是唯一一个条目。当我调试它并搜索我知道在数据库中只有一个条目的东西时,它转到第 12 行,然后是第 15 行,然后是第 25 行。如何修改循环以包含要打印的第一个条目?
代码:
try
ResultSet rs;
String comparex = jTextField2.getText().trim().toUpperCase();// puts the textfield into a string object
rs = stmt.executeQuery(
"SELECT * FROM BASTIMP where DETAILS like '%"+comparex+"%'"
); //paradox equivalent '..comparex..'
String amount;
String date;
String attached = "";
if (rs.next()) // **Line 12**
else
DisplayAreaX.setText("ENTER VALID VENDOR");
while (rs.next()) // **Line 15**
String details = rs.getString("DETAILS"); //get results from DETAILS
date = rs.getString ("DATE PAID"); //CORRECT?
amount = rs.getString ("AMOUNT BANK");
attached = attached + details +":"+ '\n'+ "Date " +date+ " / "+
"Amount £"+ amount+ '\n'; // - ADDS MULTIPLE ENTRIES ON OUTPUT OF jList!
DisplayAreaX.setText(attached);
System.out.println(details+":"+ '\n'+ "Date "+date+ " / "+
"Amount £"+ amount+ '\n');
catch (SQLException e)
System.out.println("SQL Exception: " + e.toString());
catch (ClassNotFoundException cE)
System.out.println("Class Not Found Exception: " + cE.toString());
// **Line 25**
谢谢
【问题讨论】:
完成,至少部分完成。可以做更多的清理工作 【参考方案1】:您在访问结果之前调用了 rs.next() 两次。我想说有两个选择,首先用 do...while 循环替换 while,或者删除 if/else 语句并在计数器中跟踪结果,最后检查计数器是否为 0 和然后显示消息。
【讨论】:
您好,感谢您的回复。当我删除 if/else 语句时,它可以完美运行。但是当输入错误的数据时,代码怎么会显示“无效的供应商”呢?你能修改一下代码吗?【参考方案2】:为什么不把逻辑改成:
int recordCount = 0;
while (rs.next())
recordCount ++;
String details = rs.getString("DETAILS"); //get results from DETAILS
date = rs.getString ("DATE PAID"); //CORRECT?
amount = rs.getString ("AMOUNT BANK");
attached = attached + details +":"+ '\n'+ "Date " +date+ " / "+ "Amount £"+ amount+ '\n'; // - ADDS MULTIPLE ENTRIES ON OUTPUT OF jList!
DisplayAreaX.setText(attached);
System.out.println(details+":"+ '\n'+ "Date "+date+ " / "+ "Amount £"+ amount+ '\n');
if (recordCount == 0)
DisplayAreaX.setText("ENTER VALID VENDOR");
【讨论】:
感谢您的回复,唯一的问题是,当我尝试时,我得到了“不兼容的布尔和 int 类型”的错误。运算符 ++ 也不能应用于布尔值。 我认为目的是让 recordCount 成为 int。【参考方案3】:只需使用 do-while 语句代替 while :-)
【讨论】:
以上是关于我怎样才能让这个程序也打印列表中的第一个条目?的主要内容,如果未能解决你的问题,请参考以下文章