【发布时间】:2023-04-01 07:41:02
【问题描述】:
所以,我有这样的事情:
System.out.println("Enter owner's IC no. or plate no. : ");
String update = in.nextLine();
String sql = String.format("SELECT * FROM `vehicle` WHERE ic='%s' OR plate ='%s'",update,update);
ResultSet rs = stmt.executeQuery(sql);
if(rs.next()) {
System.out.println("RegNo." +"\t\t"+ "Name" + "\t\t" + "IC" +"\t\t" + "Plate No." + "\t" + "Color" + "\t\t" + "Year" + "\t\t" + "Make" + "\t\t" + "Model" +"\t\t"+ "Capacity" + "\t" + "Type" +"\t\t" + "Max Load");
}
else {
System.out.println("IC and PLate No. not found....");}
while (rs.next()) {
regno = rs.getInt("regno");
name = rs.getString("name");
ic = rs.getString("ic");
plate = rs.getString("plate");
color = rs.getString("color");
year = rs.getInt("year");
make = rs.getString("make");
model = rs.getString("model");
capacity = rs.getDouble("capacity");
type = rs.getString("type");
maxload = rs.getDouble("maxload");
System.out.println(toString());
}
我要做的是,如果在数据库中找到数据,它将打印下表以获取匹配的输出。
现在,它应该打印出每个输出。但是,它只打印出第一个。
我相信下面的代码是原因:
if(rs.next()) {
System.out.println("RegNo." +"\t\t"+ "Name" + "\t\t" + "IC" +"\t\t" + "Plate No." + "\t" + "Color" + "\t\t" + "Year" + "\t\t" + "Make" + "\t\t" + "Model" +"\t\t"+ "Capacity" + "\t" + "Type" +"\t\t" + "Max Load");
}
else {
System.out.println("IC and PLate No. not found....");}
【问题讨论】:
-
你的两个代码sn-ps有什么关系?一个人打电话给另一个人吗?
-
他们的方法是一样的
-
那么我们需要更多的上下文。您的
while循环应该将光标循环到整个结果集。而您的if语句also 将光标向前移动一行。它们都修改了光标在ResultSet中的位置,所以我们需要知道完整的数据流是什么。您可以编辑您的帖子以包含足够的代码以供其他人复制您的问题吗? -
好的,我做了一些编辑
-
所示代码将跳过第一行,而不是只显示第一行...此外,您的代码容易受到 SQL 注入:您应该不
String.format值到查询字符串中,你应该使用带参数的预处理语句。