javabean代码为
package Bean;
import java.io.*;
import java.util.*;public class books {
Hashtable mybook=new Hashtable();
//将商品放入购物车
public void addbooks(String bookID,int bookcount)
{
if(mybook.contains(bookID))
{// 将购物车中的数据相加
int temp_book=(Integer)mybook.get(bookID);
temp_book=temp_book+bookcount;
mybook.put(bookID, new Integer(temp_book));
    }
else
{
mybook.put(bookID, new Integer(bookcount));
}

}
//将购物车中的商品减少
public void minubook(String bookID,int bookcount)
{
if(mybook.contains(bookID))
{
int temp_book=(Integer)mybook.get(bookID);
temp_book=temp_book-bookcount;
if(temp_book<=0)
{
 deletebook(bookID);

}
mybook.put(bookID, new Integer(temp_book));
}

}
//删除购物车中的一件商品
public boolean deletebook(String bookID)
{
 if(mybook.remove(bookID)==null)
 return false;
 else
 return true;
}
//获得购物车中商品 
public Hashtable getooks()
{

return mybook;
}
}查看所有记录代码为:
<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
    <%@ page import="java.util.*" %>
    <%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
<a href="buybook2.jsp">我要查看购物车</a>
<%
//加载驱动器
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (Exception e) {
out.println(e);
}
//创建连接
try {
Connection con;
Statement sql;
ResultSet rs;
con = DriverManager.getConnection("jdbc:odbc:test");
sql = con.createStatement();
rs = sql.executeQuery("select * from books");
out.println("<table>");
out.println("<tr><td>书籍编号</td>");
out.println("<td>书籍名称</td>");
out.println("<td>书籍价格</td><td>书籍数目</td><td>是否购买</td></tr>");
while (rs.next()) {
out.println("<tr><td>" + rs.getString(1) + "</td>");
out.println("<td>" + rs.getString(2) + "</td>");
out.println("<td>" + rs.getFloat(3) + "</td>");
out.println("<td>" + rs.getInt(4) + "</td>");
out.println("<td><a href='buybook2.jsp?bookID="
+ rs.getString("bookID") + "'>我要购买</a></td></tr>");
} } catch (Exception ce) {
out.println(ce);
}
%></body>
</html>
运行时出现这样的异常:
我要查看购物车 
书籍编号 书籍名称 书籍价格 书籍数目 是否购买 
10      数据结构 78.0    2 j            ava.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引  
请帮忙看下!

解决方案 »

  1.   

    >
    <a href="buybook2.jsp">我要查看购物车</a>
    ======================
    你的jsp呢?
    就这样没了?
      

  2.   

    JavaBean还可再改善,Key用ID,Value用集合,集合里放Book实体
      

  3.   

    查看购物车里的所有商品就是jsp页面呀!
      

  4.   

    楼主使用的是Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    桥接方式来连接sqlserver的话,RessultSet要按照表字段的顺序来取值!1 创建表create table a(
        seq int,
        content varchar(20)
    )insert into a
    select 1,'aaa'
    2 测试jsp页面<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@page import="java.sql.*"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%!
    // String DB_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    // String DB_URL = "jdbc:sqlserver://localhost;DatabaseName=test";
    String DB_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    String DB_URL = "jdbc:odbc:LocalServer";
    String DB_USER = "test";
    String DB_PASSWORD = "password";
    %>
    <%
    Class.forName(DB_DRIVER);
    Connection conn = DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWORD); 
    PreparedStatement pstmt = conn.prepareStatement("select * from a");
    ResultSet rst = pstmt.executeQuery();
    while(rst.next()){
    %>
            <!--  这里顺序要和表的一致 -->
    <h1><%= rst.getObject("seq") %> !---! <%= rst.getObject("content") %></h1>        <!-- 这样就是错的,因为顺序不一致了! -->
    <!-- <h1><%= rst.getObject("content") %> !---! <%= rst.getObject("seq") %></h1> --> <br>
    <%     
    }
    %>
    </body>
    </html>楼主检查一下吧!
      

  5.   

    最好不要用桥接来做了,有很多莫名其妙的错误,搞得自己很被动 ^0^
    用纯jdbc的jar驱动吧,方便而强大!
      

  6.   

    你的 books 数据库里有4个字段吗?
      

  7.   

    表中只有四个字段,而你有一个字段重复读取了一次..
       造成了最后链接的地方的值为空....
    你可以把要重复使用的  bookID  用一个变量来保存
    我想这样就没问题了
      

  8.   

    这种情况要按顺序读取的,读到最后一个后,不能在用那种方法去读取前面的;这样会出错,我曾经也碰过这样的,
    你可以先bookID字段的值保存到一个变量中,然后下用这个变量去引用就可以了.读取的时候注意顺序哦.
      

  9.   


    的确是顺序的问题,,好好的回去看下JDBC-ODBC编程的书,,,