java rs.getString()错误“列索引超出范围,5> 4”

时间:2013-09-05 13:51:08

标签: java

当我尝试打印查询时,我收到此错误:“列索引超出范围,5> 4”。

我知道错误是因为我正在尝试获取我的表所具有的更多值....但在我的情况下,我尝试执行一个将从不同查询调用的方法,这意味着值暴怒每张桌子都可能不同......

这是代码:

 import java.io.PrintWriter;
 import java.io.IOException;
 import java.sql.ResultSet;

 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

 public class TableCreator {
 String Query;
 ResultSet rs1;

 String string, string1, string2, string3, string4, string5, string6, string7,string8,string9;
 int numecolumns;


public TableCreator(String Query, String string, String string1, String string2, String string3, String string4, String string5, String string6, String string7,String string8,String string9){
    this.Query = Query;
    this.string = string;
    this.string1 = string1;
    this.string2 = string2;
    this.string3 = string3;
    this.string4 = string4;
    this.string5 = string5;
    this.string6 = string6;
    this.string7 = string7;
    this.string8 = string8;
    this.string9 = string9;

}

 public void Table(HttpServletRequest req, HttpServletResponse res) throws IOException  {

    PrintWriter pw = res.getWriter();
    res.setContentType("text/html");

try
{

    CallDB query = new CallDB(Query);
    query.connectDB();
    rs1 = query.connectDB();

    pw.println(string+ "<br>");
    pw.println("<table><tr>");
    pw.println("<td><b>"+string+"</b></td>");
    pw.println("<td><b>"+string1+"</b></td>");
    pw.println("<td><b>"+string2+"</b></td>");
    pw.println("<td><b>"+string3+"</b></td>");
    pw.println("<td><b>"+string4+"</b></td>");
    pw.println("<td><b>"+string5+"</b></td>");


    while (rs1.next()){ 

        String string1 = rs1.getString(1);
        String string2 = rs1.getString(2); 
        String string3 = rs1.getString(3);
        String string4 = rs1.getString(4);
        String string5 = rs1.getString(5);


        pw.println("<tr>");
        pw.println("<td>"+string1+"</td>");
        pw.println("<td>"+string2+"</td>");
        pw.println("<td>"+string3+"</td>");
        pw.println("<td>"+string4+"</td>");
        pw.println("<td>"+string5+"</td>");

        pw.println("</tr>");
          } 
}catch (Exception e) {
    e.printStackTrace();
}
   }
 }

如果表的列数至少相同,但是如果表的列数最少,则表示收到错误。 当列不存在时,有什么方法可以打破执行?

提前致谢

1 个答案:

答案 0 :(得分:3)

您可以致电ResultSet.getMetaData获取ResultSet的元数据。它包含一个ResultSetMetaData.getColumnCount方法,可以告诉您ResultSet有多少列。