当我尝试打印查询时,我收到此错误:“列索引超出范围,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();
}
}
}
如果表的列数至少相同,但是如果表的列数最少,则表示收到错误。 当列不存在时,有什么方法可以打破而执行?
提前致谢
答案 0 :(得分:3)
您可以致电ResultSet.getMetaData
获取ResultSet
的元数据。它包含一个ResultSetMetaData.getColumnCount
方法,可以告诉您ResultSet
有多少列。