如何判断结果集是否为空?

发布于 2024-10-21 02:41:23 字数 1478 浏览 1 评论 0原文

再会!

我想知道如果我想确定我的搜索是否存在,如何在 if-else 语句 中获得所需的结果。我按照之前与此相关的问题中的建议进行了各种组合,但仍然无法得到我想要的。

代码 1:如果搜索为空,我无法到达 else 语句...

        if (resultSet!= null) {
            while (resultSet.next()) {   //MULTIPLE VALUE SEARCH
                Product product = new Product();
                product.setProductId(resultSet.getInt("productId"));
                product.setProductName(resultSet.getString("productName"));
                productList.add(product);
            }
            request.setAttribute("productList", productList);
            RequestDispatcher rd = request.getRequestDispatcher("adminViewSearch.jsp");
            rd.forward(request, response);
        } else {
            request.setAttribute("message", "Search Failed"):
            RequestDispatcher rd = request.getRequestDispatcher("adminViewSearch.jsp");
            rd.forward(request, response);
        }

代码 2:我也无法到达应显示搜索值的 else 语句... 代码

        if (!resultSet.next()) {
             .... Search Failed Message    
        } else { 
             while(result.next()){.....
        }

3:结果与案例 1 相同:

        if (resultSet.wasNull()) {
             .... Search Failed Message    
        } else { 
             while(result.next()){.....
        }

我尝试了其他组合,并且我仍然无法达到我想要的结果,如下所示: 当用户搜索一个值时,如果结果集为空,则会出现错误消息,否则如果搜索不为空,则会显示1个或多个搜索。

请给我一个更简单的替代方法,因为我似乎做错了。

先感谢您..

Good day!

I am wondering how can I get the desired result in my if-else statement if i want to determine if my search is existing or not. I do various combinations as suggested in the previous questions related to this but still I cannot get what I want.

Code 1: I cannot reach the else statement if my search is empty...

        if (resultSet!= null) {
            while (resultSet.next()) {   //MULTIPLE VALUE SEARCH
                Product product = new Product();
                product.setProductId(resultSet.getInt("productId"));
                product.setProductName(resultSet.getString("productName"));
                productList.add(product);
            }
            request.setAttribute("productList", productList);
            RequestDispatcher rd = request.getRequestDispatcher("adminViewSearch.jsp");
            rd.forward(request, response);
        } else {
            request.setAttribute("message", "Search Failed"):
            RequestDispatcher rd = request.getRequestDispatcher("adminViewSearch.jsp");
            rd.forward(request, response);
        }

Code 2: I cannot also reach the else statement where values searched should be displayed...

        if (!resultSet.next()) {
             .... Search Failed Message    
        } else { 
             while(result.next()){.....
        }

Code 3: Same result as Case 1:

        if (resultSet.wasNull()) {
             .... Search Failed Message    
        } else { 
             while(result.next()){.....
        }

I tried other combinations and still I cannot achieve the result I desired which is as follows:
When the user search a value, if the resultset is null, an error message will appear, else if the search is not null, 1 or multiple searches will be displayed.

Kindly give me an alternative on how to this the easier way because it seems like I am doing it wrong.

Thank you in advance..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

櫻之舞 2024-10-28 02:41:23

在代码1中:

    if(productList.size() == 0 ){
         request.setAttribute("message", "Search Failed"):        
    }else{
          request.setAttribute("productList", productList);             
    }

    RequestDispatcher rd = request.getRequestDispatcher("adminViewSearch.jsp");
    rd.forward(request, response);  

或者更合适的方式只需设置

    if (resultSet!= null) {
        while (resultSet.next()) { 
            Product product = new Product();
            product.setProductId(resultSet.getInt("productId"));
            product.setProductName(resultSet.getString("productName"));
            productList.add(product);
        }
        request.setAttribute("productList", productList);
        RequestDispatcher rd = request.getRequestDispatcher("adminViewSearch.jsp");
        rd.forward(request, response);
    }

并在jsp

<c:if test="${fn:length(companies) gt 0}">
   <!--display collection using c:foreach -->
</c:if>

<c:if test="${fn:length(companies) eq 0}">
   Search failed
</c:if>

in code 1:

    if(productList.size() == 0 ){
         request.setAttribute("message", "Search Failed"):        
    }else{
          request.setAttribute("productList", productList);             
    }

    RequestDispatcher rd = request.getRequestDispatcher("adminViewSearch.jsp");
    rd.forward(request, response);  

Or more appropriate way would be just set

    if (resultSet!= null) {
        while (resultSet.next()) { 
            Product product = new Product();
            product.setProductId(resultSet.getInt("productId"));
            product.setProductName(resultSet.getString("productName"));
            productList.add(product);
        }
        request.setAttribute("productList", productList);
        RequestDispatcher rd = request.getRequestDispatcher("adminViewSearch.jsp");
        rd.forward(request, response);
    }

and on jsp

<c:if test="${fn:length(companies) gt 0}">
   <!--display collection using c:foreach -->
</c:if>

<c:if test="${fn:length(companies) eq 0}">
   Search failed
</c:if>
最丧也最甜 2024-10-28 02:41:23

一种可能的解决方案(尽管不是很优雅)是

if (!resultSet.next()) {
     .... Search Failed Message
} else {
    do {
        ...
    } while (resultSet.next());
}

但是,如果您无论如何都需要填充列表,也许 Jigar Joshi 的解决方案会更好。

One possible, though not very elegant, solution is

if (!resultSet.next()) {
     .... Search Failed Message
} else {
    do {
        ...
    } while (resultSet.next());
}

However, if you need to populate a list anyway, perhaps Jigar Joshi's solution would be better.

长不大的小祸害 2024-10-28 02:41:23

试试这个:

boolean searchEmpty = true;

while (resultSet.next()) {
  //create objects
  searchEmpty = false;
}

if (searchEmpty) {
 //set error message.
}

Try this :

boolean searchEmpty = true;

while (resultSet.next()) {
  //create objects
  searchEmpty = false;
}

if (searchEmpty) {
 //set error message.
}
雪化雨蝶 2024-10-28 02:41:23

您可以使用 ResultSet.getRow() 返回行数,如果返回零则表示没有产品。然后您就可以进行进一步的操作。

You can use ResultSet.getRow() which returns the number of rows and if it return zero than there are no products. And than you can carry out further operations.

罪歌 2024-10-28 02:41:23

使用可滚动的 ResultSet

 Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
 ResultSet rs = stmt.executeQuery("SELECT a, b from TABLE2");

然后您可以调用rs.beforeFirst( ) 一直移回到结果集的顶部。

Use a scrollable ResultSet:

 Statement stmt= con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
 ResultSet rs = stmt.executeQuery("SELECT a, b from TABLE2");

You can then call rs.beforeFirst() to move all the way back to the top of the resultset.

你穿错了嫁妆 2024-10-28 02:41:23
  if(rs !=null)
   {
    if(rs.isBeforeFirst() && rs.isAfetrLast())
     {
     out.println("row is empty");
      }
     else
    {
     while(rs.next())
     {

   //execute your code 
   }
 }
 }
else{ out.println("row is null");}
  if(rs !=null)
   {
    if(rs.isBeforeFirst() && rs.isAfetrLast())
     {
     out.println("row is empty");
      }
     else
    {
     while(rs.next())
     {

   //execute your code 
   }
 }
 }
else{ out.println("row is null");}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文