我的代码如下
public ArrayList process(ResultSet rs) throws SQLException {
    ArrayList rdlist=new ArrayList();
    RoleData rd=null;
    while (rs.next()){
      rd= new RoleData();
      rd.RoleID =rs.getLong("RoleID");
      rd.RoleName =rs.getString("RoleName").trim() ;
      rd.RoleDes  = rs.getString("RoleDes");
      rd.UpRole = rs.getLong("UpRole");
      rd.worklistServerID = rs.getLong("WorkListServerID");
      rdlist.add(rd);
    }
    return rdlist;  }它的错误提示如下:
java.sql.SQLException: Column 'RoleID' not found.
at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:2368)
at com.mysql.jdbc.ResultSet.getLong(ResultSet.java:1436)
at cn.ac.ios.tcse.isflow.ProcessServer.UserManager.RoleResultProcessor.process(RoleResultProcessor.java:26)
at cn.ac.ios.tcse.isflow.ConnectionSQLManager.SQLProcessor.handleQuery(SQLProcessor.java:35)
at cn.ac.ios.tcse.isflow.ConnectionSQLManager.SQLProcessor.executeQuery(SQLProcessor.java:23)
at cn.ac.ios.tcse.isflow.ProcessServer.UserManager.RoleResultProcessor.main(RoleResultProcessor.java:45)
Column 'RoleID' not found.
getRoleData() failed! Database Error:Could not perform the query for:SELECT * from Role where RoleID=?
我的数据库用的是mysql,表Role里面确实是有RoleID这个Column,而且我跟踪了发现rs里面其实已经把数据取出来了,但是用rd.RoleID =rs.getLong("RoleID");会出错,更奇怪的是同样的代码在别人机器上运行是正确的,我如果改成rd.RoleID =(long)rs.getDouble(1);好像可以,而且同样的问题也出现在rd.RoleName =rs.getString("RoleName").trim() ;用这条语句取出来的是乱码,改成
rd.RoleName = (new String(rs.getBytes(2))).trim();就可以,不知道这是为什么?,我想是不是与我用的mysql或者是mysqljdbc connector有关啊,请哪位高手指点一下,感激不尽!