我用Java编一个数据库程序时遇到了个奇怪的问题,如下
public class IBoardImple extends DatabaseOperate implements IBoard {
    private int parentId = 0;
    private List subList = null;
    private HashMap map = new HashMap();
    private Connection conn = null;
    private PreparedStatement statement = null;
    private ResultSet rs = null;public Map FindBoardMap() {
        String sql = "select * from TBL_BOARD order by boardId";
        try{
            conn = this.GetConnection();
            statement = conn.prepareStatement(sql);
            rs = statement.executeQuery();
            subList = new ArrayList();
while(rs.next()){
                System.out.print("boardId:"+rs.getInt("boardId"));
                System.out.println("\tparentId:"+rs.getInt("parentId"));
}}
当我这样写时就能顺利编译
但是当我把最后两行多输出一个字段时,改成这样(TBL_BOARD表中一共就有这三个字段)
while(rs.next()){
                System.out.print("boardId:"+rs.getInt("boardId"));
                System.out.print("\tparentId:"+rs.getInt("parentId"));
                System.out.println("\tboardName:"+rs.getString("boardName"));}
就会出现提示错误,我的列名都写的对着呢,错误提示我给出第一行
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引,这是为什么,怎么解决?

解决方案 »

  1.   

    在对sqlserver数据库进行数据读取的时候, 
    必须按照表中列名的顺序读取,不然就会出现这个错误错误. 如果数据库定义顺序: 
    name 
    password 
    power 
    取值时一定要按下面顺序来取: 
            rs.getString("name") 
            rs.getString("password") 
            rs.getString("power") 
    问题可以解决. 
      

  2.   

    我记得有次用JDBC-ODBC桥的时候出现问题,好像用ResultSet.get("")的时候只能按表中字段的顺序来读。
    不知道你是不是这情况,你可以试下,不敢保证有效。