我的数据库为MYSQL,在检索USER表的时候将所有用户的UID显示出来。
String loginSql = "select uid,uname,bmid,issuper,islock from users";
Vector vec = db.open(loginSql); 此处db是实例化的一个类
for(int i=0;i<vec.size();i++)
{
Hashtable ht = (Hashtable)vec.elementAt(i);
out.println(ht.get("uid"));
}错误信息为:

500 Servlet Exception
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.util.Hashtable
at _admin._login__jsp._jspService(/admin/login.jsp:30)
at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
at com.caucho.jsp.Page.subservice(Page.java:506)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
at com.caucho.server.http.Invocation.service(Invocation.java:315)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:253)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:171)
at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
at java.lang.Thread.run(Thread.java:619)
用捕获异常得到的结果是:
<%= exception.getMessage() %> 结果为->[Ljava.lang.String; cannot be cast to java.util.Hashtable

<%= exception.toString()%> 结果为->java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.util.Hashtable请高手赐教,小弟初学JSP,望多指教!我这个类都是用的别人做的一个程序里的,至于写的JSP页面也是模仿着写的。

解决方案 »

  1.   

    这个错误说的是你的类型转换错误
    Hashtable ht = (Hashtable)vec.elementAt(i); (这里出的错)
    应该是你的vector里面存的元素不是HashTable类型的
      

  2.   

    类型转换错误
    你可以查看一下vector和hashtable相关的数据结构http://alexxia.blog.hexun.com/22754619_d.html
      

  3.   

    Hashtable ht = (Hashtable)vec.elementAt(i); 
    Hashtable 你用错了,不是这样用的,Hashtable 和list用法相同,上面那语句你用错了,Hashtable你定义一个对象就可以了,你用了for循环定义了很多对象,里面应该用自定义的Been 来做,Been been=(Been)vec.elementAT(i);
    然后Hashtable 来保存此been,这样Hashtable 中保存的都是一个类对象.
      

  4.   

    这个问题已经解决!
    现在是我在MYSQL数据库里获得一个日期,但是不是日期类型的。用的Hashtable获得的,如:
    Hashtable ht=new Hashtable;
    ...
    ht.get("tjrq")我的ht.get("tjrq")怎么转化为日期类型,并计算和当前日期相差的天数呢?