BOOKSTORE 
--------------------------------------------------------------------------------书名 作者 价格 销售数量 评论  
j2ee核心模 [Microsoft][ODBC SQL Server Driver]无效的描述符索引 
加入购物车     继续购物
 
程序:
<%@ page contentType="text/html;charset=GBK" %>
<%@ include file="common.jsp" %>
<%@ page import="java.util.*,java.sql.*" %>
<%@ page language="java"%>
<html>
 <head><title>TitleBookDescription</title></head>
 <%@ include file="banner.jsp" %>
 <br>
 <% 
  String bookId=request.getParameter("bookId");
  if(bookId==null)bookId="1";
 try
 {
String url= "jdbc:odbc:eshop";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn= DriverManager.getConnection(url);
java.sql.Statement stmt;
stmt= conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String queryMessage = "select * from books ";
queryMessage += "where "+"id='"+bookId+"'";
ResultSet rs= stmt.executeQuery(queryMessage);
 out.println("<table border=1>");
 out.println("<tr><td>书名<td>作者<td>价格<td>销售数量<td>评论");
while(rs.next())
{
out.println("<tr>");
  out.println("<td>"+rs.getString("title")+"</td>");
out.println("<td>"+rs.getString("name")+"</td>");
out.println("<td>"+rs.getFloat("price")+"</td>");
out.println("<td>"+rs.getString("saleAmount")+"</td>");
out.println("<td>"+rs.getString("description")+"</td>");
out.println("</tr>");
}
out.println("</table>");
    rs.close();
stmt.close();
conn.close();
 }catch(Exception e){
out.println(e.getMessage());
  }
   out.println("<p><strong><a href="+request.getContextPath()+"/eshop/catalog.jsp?Add="+bookId+">");
   out.println("加入购物车");
   out.println("</a>&nbsp;&nbsp;&nbsp;");
   out.println("<a href="+ request.getContextPath()+"/eshop/catalog.jsp"+">"+"继续购物</a></p>");
   out.println("</strong>");
   out.println("</body>");
   out.println("</html>");
    %>

解决方案 »

  1.   

    检查一下表中的字段和sql语句的正确性。
      

  2.   

    请检查你的Sql语句方法:将你的sql语句输出来,然后到sql server里看是否能执行请检查你的rs.getXXX("XXX")中的XXX字段跟数据库里对应表的字段是否匹配。方法:睁大眼睛
      

  3.   

    我觉得这应该是个bug
    是getXXX("")和sql语句的字段顺序不一致造成的,如
    select a,b from ab
    在访问的时候就不能先getXXX("b"),再getXXX("a"),而要先getXXX("a"),再getXXX("b")就没问题了
      

  4.   

    我遇到的都是这样的情况
    因为SQL查询集里面的数据对它们检索的时候要按顺序的,是个指针!