我想做一个实例,就是从数据库取值然后和输入的值比较,如果不一样不能查看,就是一个权限的功能。
前面省略,从后面开始: String sql = "select * from user";
SQLQuery sq = getSession().createSQLQuery(sql);
        String newName = null;
        ScrollableResults sr = sq.scroll();
        while(sr.next){
               newName = sr.getString(2);  //这里我想取出user表中第二列,我的字段是UserName,String类型的
         }if().......
省略可是,tomcat一直报一个错:java.lang.ArrayIndexOutOfBoundsException: 2
org.hibernate.impl.AbstractScrollableResults.getFinal(AbstractScrollableResults.java:163)
org.hibernate.impl.AbstractScrollableResults.getString(AbstractScrollableResults.java:257)
com.lee.dao.SimpleHibernateDao.isLogin(SimpleHibernateDao.java:122)
com.lee.action.LoginAction.execute(LoginAction.java:44)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
.......................
查了hibernate的api,里面对ScrollableResults的getString()是这样描述的。 String getString(int col) 
          Convenience method to read a string 
是这个方法用法不是这样的吗????如果不是,用什么方法取得数据库指定列的字段值呢,就想jdbc里的Resultset的遍历后赋值一样.?

解决方案 »

  1.   

    项目中我都用的列名,要是你在数据库中alter一个字段。看你怎么搞、????
      

  2.   

    ArrayIndexOutOfBoundsException 越界了
    确定下表是否存在,提交了,表中有几个字段?
      

  3.   

    可是,用列名用那个方法?getString()这个方法里面是传列数啊。还有,我表里面有3个字段,就算是2也不应该是越界啊,我改成0,1,2都有错
      

  4.   


    表肯定存在,CRUD在程序中都实现了,就是这个查询。
      

  5.   

    user 是关键字,要用[]包起来
      

  6.   

    你取来的是对象吧!  get(0)看看是不是对象