【问题标题】:java.sql.SQLException: Column Index out of range, 8 > 6java.sql.SQLException:列索引超出范围,8 > 6
【发布时间】:2015-05-05 10:39:51
【问题描述】:

当我尝试检索整个记录并从数据库中显示它时。它显示一个错误

java.sql.SQLException: Column Index out of range, 8 > 6. 

我无法弄清楚这一点。请帮忙。

JAVA 代码

public ArrayList viewAllDrivers() {
        ArrayList allDrivers=new ArrayList();

        try {
            String sql= "select * from adddriver ORDER BY dname";
            rs =DBConnection.executeQuery(sql);
            while(rs.next()) {
                ArrayList one = new ArrayList();
                one.add(rs.getInt(1));
                one.add(rs.getString(2));
                one.add(rs.getString(6));
                one.add(rs.getString(8));
                one.add(rs.getString(9));
                one.add(rs.getString(10));
                one.add(rs.getInt(11));
                allDrivers.add(one);
            }

        }
        catch (Exception ex) {
            System.out.println (ex);
        }
        return allDrivers;
    }

我试图显示结果的页面

<%
SearchDAO searchDAO = new SearchDAO();
ArrayList all = searchDAO.viewAllDrivers();
int size = all.size();
%>


<table width="95%" align="center"  style="border:#D22929 solid 2px;padding:10px;" border="0">
  <tr>
    <th bgcolor="#D22929" scope="col"><span class="style10">Driver Name </span></th>
    <th bgcolor="#D22929" scope="col"><span class="style10">Address</span></th>
    <th bgcolor="#D22929" scope="col"><span class="style10">City</span></th>
    <th bgcolor="#D22929" scope="col"><span class="style10">Contact</span></th>
    <th bgcolor="#D22929" scope="col"><span class="style10">Country&nbsp;&nbsp;</span></th>
    <th bgcolor="#D22929" scope="col"><span class="style10">Ation</span></th>
  </tr>

<%
for(int i=0;i<size;i++){
ArrayList one=(ArrayList)all.get(i);
%>
<tr style="height:30px; padding:4px;">
    <td><div align="center"><%=(String)one.get(1)%></div></td>
    <td><div align="center"><%=(String)one.get(2)%></div></td>
    <td><div align="center"><%=(String)one.get(3)%></div></td>
    <td><div align="center"><%=(String)one.get(4)%>&nbsp;</div></td>
    <td><div align="center"><%=(String)one.get(5)%>&nbsp;</div></td>

</tr>
<% } %>

【问题讨论】:

  • 这是不言自明的。您正在访问超过表大小的列索引。仔细检查你的桌子。
  • 检查数据库中表中的列数。此外,使用 servlet。您的 jsp 文件中不应包含任何 Java 代码。
  • ADDDRIVER 表只有 6 列,但您想获得第 8 列。
  • 你的表ADDDRIVER有多少列?

标签: java mysql sql


【解决方案1】:

此错误意味着您的adddriver 只有 6 列,因此 8 是无效的列索引。

这意味着所有这些语句都有无效的索引:

            one.add(rs.getString(8));
            one.add(rs.getString(9));
            one.add(rs.getString(10));
            one.add(rs.getInt(11));

也许您的数据库表不包含您认为的内容。

【讨论】:

    【解决方案2】:

    最好明确命名您正在检索的列,这样您就不会遇到此类问题。

    公共 ArrayList viewAllDrivers() { ArrayList allDrivers=new ArrayList();

        try {
            String sql= "select city,address,... from adddriver ORDER BY dname";
            rs =DBConnection.executeQuery(sql);
            while(rs.next()) {
                ArrayList one = new ArrayList();
                one.add(rs.getInt(1));
                one.add(rs.getString(2));
                one.add(rs.getString(6));
                one.add(rs.getString(8));
                one.add(rs.getString(9));
                one.add(rs.getString(10));
                one.add(rs.getInt(11));
                allDrivers.add(one);
            }
    
        }
        catch (Exception ex) {
            System.out.println (ex);
        }
        return allDrivers;
    }
    

    您将超出列数,因为您遇到此异常

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 2018-07-04
      相关资源
      最近更新 更多