【发布时间】:2016-08-31 08:21:54
【问题描述】:
我编写了以下代码,即使没有结果,结果集(此处标记为 rs3)也返回 true。我想检查是否没有结果,然后用户必须再次输入正确的手机制造商。唐不知道我哪里出错了?
BufferedReader r2 = new BufferedReader(new InputStreamReader(System.in));
String phone_manufacturer="";
boolean value1=true;
while (value1) {
System.out.println("\nPlease select your choice of phone manufacturer " );
String line = r2.readLine();
if (line.matches("[A-Za-z ]+$")) {
phone_manufacturer = line;
final String sql3 = "SELECT * from phone_model WHERE phone_type = '"+phone_type_choice+"' and manufacturer ='"+phone_manufacturer+"'";
st3 = connection.createStatement();
rs3= st3.executeQuery(sql3);
if(rs3!=null){
System.out.println("Model"+" "+"Manufacturer"+""+"Phone_type");
while(rs3.next()){
String modell = rs3.getString("Model");
String manufacturer = rs3.getString("Manufacturer");
String phone_type = rs3.getString("Phone_type");
System.out.format("%-25s%-20s%-10s\n",modell,manufacturer,phone_type);
}
}
else
{
System.out.println("The manufacturer isn't avaiable for the phone type choosen.Please try again");
value1=true;
continue;
}
value1=false;
}else
{
System.out.println("\nPlease enter correct manufacturer name " );
value1=true;
continue;
}
break;
}
【问题讨论】:
-
你应该这样检查 if (!resultSet.isBeforeFirst() ) { System.out.println("No data"); }
-
executeQuery 总是返回一个结果集,即使它是空的。
-
你是说 rs3.next() 返回 true 吗?顺便说一句,您这里的代码容易受到 SQL 注入的影响,所以我希望这只是一个示例。 IE.,有人输入phone_type="1; DROP TABLE phone_model; --"
-
这个post 可以帮助你。
-
我认为您需要将 if (rs3 != null) 更改为 if (!rs3.isAfterLast())