【问题标题】:SQL resultset processingSQL 结果集处理
【发布时间】:2015-12-27 00:24:21
【问题描述】:

有人可以帮我处理这个 SQL。 我“应该”有一个记录,事实上,我知道我有一个记录,但是代码正在下降到 catch 表达式。

好的...我修改了代码并得到了相同的结果。遇到异常

<%
String sqlpminfo = "select ea.PreferredName, ea.LastName, ea.AreaCityCode, ea.PhoneNo, eemail.EmployeeEmailAddress from Program p join ProgramXXXEmployeeRole pxxx on pxxx.ProgramID = p.ProgramID and pxxx.RoleCode=799 join EmployeeAdmin ea on ea.XXXEmployeeCode = pxxx.XXXEmployeeCode join EmployeeEmail eemail on eemail.XXXEmployeeCode = pxxx.XXXEmployeeCode where p.ProgramID=" + formFields.getValue("programID");

  try { 
        log.info(sqlpminfo);
        log.info("programID: " + formFields.getValue("programID"));
        QueryWrap pmwrap = new QueryWrap();
        ResultSet pmrt = pmwrap.executeQueryWithException(sqlpminfo);
                if (pmrt == null || pmrt.equals(""))
                 {  pmrt.close();


         }
         else
         {
            int i = 0;
            while ( pmrt.next() )
            {
                        String pmFname = pmrt.getString(1);
                        String pmLname = pmrt.getString(2);
                        String pmAreacode = pmrt.getString(3);
                        String pmPhone = pmrt.getString(4);
                        String pmemail = pmrt.getString(5);
                        log.info ("PM Contact: " + pmrt.getString(1) + " " + pmrt.getString(2) );

                        %>
                        Name:  <%=pmFname%> <%=pmLname%> <br/>
                        Email: <a href="mailto:<%=pmemail%>"><%=pmemail%></a><br/>

                        Phone: (<%=pmAreacode%>) 
                        <%if (pmPhone.length() == 7) {%><%=pmPhone.substring(0, 3)%>-<%=pmPhone.substring(3, 7)%>   <%} else {%><%=pmPhone%><%} %>
                        <br/><br/>
                        <%

                        i++;
                     } //end of while

                    pmrt.close();
                    if(i == 0)
            {
             %>
                            Contact Information is not available. Please email <br/>
                        <%
            }
                } //end if if 

        } catch (Exception ee) {
                        %>
            log.error("caught exception in PMcontactinfo: " + e);



<%  }%>

【问题讨论】:

  • 经过进一步的故障排除后,发现我的一个表存在权限问题……它实际上是一个视图。然后构成该视图的表也存在权限问题。

标签: java sql resultset


【解决方案1】:

pmrt.last() :将光标移动到结果集中的最后一行。
pmrt.getRow() :返回行号。如果您有 10 个匹配结果,这将在您的场景中给出 10 个。
pmrt.beforeFirst() :将再次将光标设置在结果集的第一行之前。您现在可以使用 pmrt.next() 获取结果集中的第一行。

你能把你得到的异常粘贴到这里吗?

【讨论】:

  • @ChannaJayamuni 和 DheerajKumarGopa 感谢您的帮助。我做了一些修改,但我的代码仍然失败/失败。当我从日志中提取 SQL 语句时,我可以在 SQL Studio 中执行它并获取记录。它不想在jsp中工作。
【解决方案2】:

ResultSetjava 的行为

当您要从左侧开始查找一本书时,请考虑一个书架。

  1. 当您开始发现时,您并不是在第一本书。你在第一本书的前面。关于ResultSet,它表示ResultSetbeforeFirst 位置。 ResultSet 允许通过调用 beforeFirst() 方法来指向这个位置。由于您尚未开始迭代,因此您无法获取行号。
  2. 当您调用ResultSetnext() 方法将光标移动到第一行时,与查看书架的第一本书时类似。此外,您可以找到书架的第一本书,类似地ResultSet 允许通过调用first() 方法将指针设置到第一行。
  3. 检查完第一本书后,您将检查下一本书。同样ResultSet 允许通过调用next() 方法将光标移动到下一行。
  4. 想想你是否已经到了书架的最后一本书。你能看看下一本书吗?不,因为在最后一行之后没有书存在。就像光标在最后一行时不能调用ResultSetnext() 方法一样。
  5. 另外,ResultSetnext() 方法返回一个boolean 值以指示是否存在更多行。当不再存在行时,它返回 false
  6. 您可以将最后一本书识别为与书架上的第一本书相同。同样ResultSet 允许通过调用last() 方法指向最后一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2011-08-24
    • 2011-07-02
    相关资源
    最近更新 更多